Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

update และ update_idletasks ใน Tkinter แตกต่างกันอย่างไร


อัปเดต เมธอดจะประมวลผลงานที่ไม่ได้ใช้งานที่ค้างอยู่ทั้งหมด เหตุการณ์ที่ไม่ได้เยี่ยมชม ฟังก์ชันการเรียก และการเรียกกลับทั้งหมด วิธีนี้ใช้ได้กับการอัปเดตและประมวลผลเหตุการณ์หรืองานทั้งหมด เช่น การวาดวิดเจ็ตใหม่ การจัดการเรขาคณิต การกำหนดค่าคุณสมบัติวิดเจ็ต ฯลฯ

นอกจากนี้ยังช่วยให้แน่ใจว่าหากแอปพลิเคชันมีงานที่ค้างอยู่ มันก็จะอัปเดตหรือรีเฟรชค่าที่ส่งผลต่อส่วนทั้งหมดของแอปพลิเคชัน ใช้อัปเดต สำหรับงานเดียวที่รอดำเนินการอาจเป็นเรื่องที่น่ารังเกียจ ดังนั้น Tkinter ยังมี update_idletasks() กระบวนการ. มันอัปเดตเฉพาะงานที่ค้างอยู่ที่ไม่ได้ใช้งานที่เสถียรหรือไม่อัปเดตในแอปพลิเคชันด้วยเหตุผลบางประการ มันเรียกเหตุการณ์ทั้งหมดที่ค้างอยู่โดยไม่มีการประมวลผลเหตุการณ์อื่น ๆ หรือการเรียกกลับ

เมธอด update() และ update_idletask() มีประโยชน์สำหรับการประมวลผลงานที่ค้างอยู่หรือไม่ได้ใช้งาน อย่างไรก็ตาม ข้อแตกต่างระหว่าง update() และ update_idletasks() นั่นคือ update() ประมวลผลเหตุการณ์ทั้งหมดที่มีอยู่ในแอปพลิเคชันในขณะที่ update_idletasks() ประมวลผลเฉพาะเหตุการณ์ที่ไม่ทำงานหรือเสถียรเท่านั้น

ตัวอย่าง

เราสามารถเข้าใจการใช้งานและการประยุกต์ใช้ update_idletasks() ผ่านตัวอย่างนี้

# Import the tkinter library
from tkinter import *
from tkinter import ttk
import time

# Create an instance of tkinter frame
win= Tk()

# Set the size of the Tkinter window
win.geometry("700x350")
def add_Text():
   for i in range(10):
      label.config(text= "The loops starts from 1 to "+ str(i))
      # Wait for two seconds
      win.update_idletasks()
      time.sleep(2)
      label.config(text= i)

# Add a label text
label= Label(win, text="Original Text", font= ('Aerial 16'))
label.pack(pady= 30)

# Add a button to update the Label text
ttk.Button(win, text="Change Text", command= add_Text).pack(pady= 40)
win.mainloop()

ผลลัพธ์

การเรียกใช้โค้ดด้านบนจะแสดงหน้าต่างพร้อมวิดเจ็ตป้ายกำกับและปุ่ม

update และ update_idletasks ใน Tkinter แตกต่างกันอย่างไร

เมื่อเรากดปุ่ม วิดเจ็ตป้ายกำกับจะได้รับการอัปเดตโดยอัตโนมัติในช่วงลูปที่กำหนด

update และ update_idletasks ใน Tkinter แตกต่างกันอย่างไร