Tkinter Progress Bar

Tkinter Progress Bar



คุณสามารถอัปเดตไคลเอ็นต์เกี่ยวกับสถานะของกระบวนการที่ใช้เวลานานด้วยวิดเจ็ตแถบความคืบหน้า เป้าหมายของวิดเจ็ตคือการให้ความมั่นใจกับผู้ใช้ว่ามีบางอย่างเกิดขึ้น มีโหมดการทำงานที่แตกต่างกันสองแบบ เมื่ออยู่ในโหมดกำหนด วิดเจ็ตจะแสดงการบ่งชี้ที่เคลื่อนที่ไปในทิศทางที่กำหนดไว้ล่วงหน้า วิดเจ็ตถูกย้ายในสถานะที่ไม่แน่นอนเพื่อให้ลูกค้ารู้สึกว่ามีบางอย่างเกิดขึ้น สัญญาณจะแกว่งไปมาระหว่างส่วนปลายของวิดเจ็ตตลอดรูปแบบนี้ การใช้แถบความคืบหน้าที่แน่นอนและไม่แน่นอนใน Python จะกล่าวถึงในบทช่วยสอนนี้

เริ่มต้นด้วยการกำหนดค่าไลบรารี Tkinter ของ Python หลังจากเปิดใช้เทอร์มินัลสำเร็จแล้ว ให้ลองใช้แบบสอบถามต่อไปนี้เพื่อกำหนดค่าแพ็คเกจ Tkinter ตรวจสอบให้แน่ใจว่าได้ติดตั้ง Python ไว้แล้วก่อนที่จะใช้คำสั่งนี้

$ sudo apt ติดตั้ง python3-tk







ตัวอย่างที่ 1

มาเริ่มกันด้วยตัวอย่างแรกของ Python เพื่อใช้โมดูล Tkinter เพื่อสร้างแถบความคืบหน้าที่กำหนดที่ GUI ดังนั้นเราจึงได้สร้างไฟล์ Python ใหม่ชื่อ 'new.py' และเพิ่มโค้ดต่อไปนี้ เราเริ่มโค้ดนี้โดยนำเข้าวัตถุย่อยทั้งหมดจากไลบรารี Tkinter ของ Python ที่บรรทัดแรก หลังจากนั้น เรานำเข้าอ็อบเจ็กต์คลาส 'ttk' จากโมดูล Tkinter ในโค้ดบรรทัดที่สอง



ตัวสร้างคลาส Tk() ถูกเรียกและบันทึกวัตถุในตัวแปร 't' ฟังก์ชัน 'หัวเรื่อง' มาถึงแล้วด้วยตัวแปรวัตถุ 't' เพื่อสร้างชื่อสำหรับ GUI ขนาดของหน้าต่าง GUI Tkinter ถูกตั้งค่าเป็น “300×200” ผ่านฟังก์ชัน geome() แถบความคืบหน้าจะถูกสร้างขึ้นโดยฟังก์ชัน 'Pbar()' ที่ผู้ใช้กำหนดเอง เราจะมาดูฟังก์ชันนี้กันในตอนหลังของบทความนี้



เราได้สร้างตัวแปร “p” ที่ 8 ไทย บรรทัดของโค้ด Python นี้ที่ใช้ฟังก์ชัน Progressbar() ผ่านอ็อบเจ็กต์คลาส 'ttk' เพื่อสร้างแถบความคืบหน้าที่หน้าจอ GUI วัตถุ 't' ถูกส่งผ่านไปยังวัตถุในขณะที่วางการวางแนวเป็นแนวนอน ตั้งค่าความยาวเป็น 400 และกำหนดโหมดของวัตถุ กล่าวคือ วัตถุจะเคลื่อนที่ไปในทิศทางใดทิศทางหนึ่งเท่านั้น ช่องว่างภายในแกน 'y' ได้รับการตั้งค่าเป็น 30 โดยใช้ฟังก์ชัน 'pack()' สำหรับแถบความคืบหน้านี้





หลังจากนี้เราได้สร้างปุ่มใหม่ 'b' โดยใช้ฟังก์ชัน Button() และส่งผ่านวัตถุ 't' ข้อความบางส่วน และคำสั่งที่จะดำเนินการหลังจากคลิกที่ปุ่ม เช่น ฟังก์ชันที่เรียกว่า ฟังก์ชัน “พีบาร์” ฟังก์ชัน Pbar() จะเพิ่มค่าของแถบความคืบหน้า 'p' ขึ้น 10 และกลับไปที่ตัวแปร 'b' ช่องว่างภายในแกน 'y' สำหรับปุ่มได้รับการตั้งค่าเป็น '10' โดยใช้ฟังก์ชัน pack() และฟังก์ชัน mainloop() อยู่ที่นี่เพื่อวนรอบการทำงานทั้งหมด



หลังจากกรอกโค้ด Python แล้ว เราก็บันทึกและดำเนินการบนคอนโซลผ่านแบบสอบถาม 'python3' ตามด้วยชื่อไฟล์ 'new.py':

$ python3 new.py

ได้เปิดตัว Tkinter GUI ของ Python ด้วยชื่อ 'Progress Bar' บนหน้าจอคอนโซลของเรา ในภาพต่อไปนี้ มีเพียงแถบความคืบหน้าที่ไม่มีการประมวลผล คุณต้องแตะปุ่มก่อน

หลังจากแตะปุ่ม 'แตะที่นี่!' แถบความคืบหน้าสีน้ำเงินจะแสดงดังนี้:

หลังจากการคลิกติดต่อกันสามครั้ง เราได้รับความคืบหน้าโดยไม่มีการเคลื่อนไหวดังต่อไปนี้:

หลังจากถึงจุดสิ้นสุดของแถบความคืบหน้าแล้ว เราไม่สามารถดำเนินการต่อไปได้ เช่น กำหนดแถบความคืบหน้า

ตัวอย่าง 2

มาดูการสร้างแถบความคืบหน้าที่ไม่แน่นอนซึ่งสามารถย้อนกลับและไปข้างหน้าภายในพื้นที่ความคืบหน้าโดยใช้โมดูล Tkinter GUI Python ดังนั้นเราจึงเริ่มโค้ด Python นี้โดยนำเข้าโมดูล Tkinter เป็น”tk” และอ็อบเจ็กต์ ttk จากคลาส “ttk” ออบเจ็กต์ tk ถูกขับออกไปเพื่อรับผลลัพธ์ของคอนสตรัคเตอร์ “Tk()” และบันทึกลงในตัวแปร “t”



ตัวแปร “t” ถูกใช้กับฟังก์ชัน title() เพื่อเพิ่มชื่อเรื่องสำหรับ GUI ควบคู่ไปกับฟังก์ชัน geome() เพื่อกำหนดขนาดของหน้าต่าง GUI ที่จะแสดง ฟังก์ชัน grid() ถูกเรียกด้วยตัวแปร 't' เพื่อจัดระเบียบ GUI ในรูปแบบตาราง

หลังจากนั้น เราใช้ตัวแปร 'p' เพื่อสร้างแถบความคืบหน้าผ่านฟังก์ชัน Progressbar() ของอ็อบเจ็กต์คลาส ttk ที่มีตัวแปร 't' เดียวกัน การวางแนวแนวนอน ความยาว 300 และโหมดไม่แน่นอน แถบความคืบหน้าได้รับการจัดระเบียบในลักษณะตารางผ่านฟังก์ชัน 'grid()' ที่ใช้ช่องว่างภายในเฉพาะสำหรับแกน 'x' และ 'y' เราได้สร้างปุ่มสองปุ่ม 's' และ 'e' สำหรับเริ่มการเคลื่อนไหวของแถบความคืบหน้า สิ้นสุด และเลื่อนไปมา







พารามิเตอร์ติดหนึบของฟังก์ชัน grid() สำหรับทั้งสองปุ่มจะกำหนดทิศทาง เช่น ตะวันออกและตะวันตก มีการตั้งค่าคำสั่ง 'เริ่ม' และ 'หยุด' สำหรับปุ่มทั้งสองที่ 9 ไทย และ 11 ไทย ไลน์. ด้วยการทำงานของฟังก์ชัน mainloop() โปรแกรมของเราจึงเสร็จสมบูรณ์และพร้อมใช้งานหลังจากบันทึก





การดำเนินการเกิดขึ้นโดยใช้วิธีการที่คล้ายกัน





$ python3 new.py

เมื่อเปิดใช้งาน GUI หน้าจอต่อไปนี้จะถูกนำเสนอ:



หลังจากกดปุ่ม 'แตะเพื่อเริ่ม' แถบความคืบหน้าก็เริ่มเคลื่อนไปข้างหน้า

เมื่อถึงจุดสิ้นสุด มันจะเคลื่อนที่ไปในทิศทางตรงกันข้าม กล่าวคือ ทิศตะวันตก

เมื่อแตะปุ่ม 'แตะเพื่อหยุด' เสร็จแล้ว แถบความคืบหน้าจะถูกตั้งไว้ที่ตำแหน่งเริ่มต้นอีกครั้ง

บทสรุป

บทความนี้แสดงการใช้แถบความคืบหน้าใน Tkinter GUI เราเพียงแค่ใช้อ็อบเจ็กต์ของคลาส Tkinter เพื่อเรียกวิดเจ็ตต่างๆ เพื่อทำให้ Python GUI โต้ตอบได้มากขึ้น เราได้พูดคุยโดยใช้แถบความคืบหน้าที่กำหนดและไม่แน่นอนในตัวอย่างของเรา เราหวังว่าคุณจะสนุกกับการใช้สิ่งเหล่านี้