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

ความแตกต่างระหว่าง update() และ update_idletasks() ใน Tkinter

ทั้งสองเมธอดใช้สำหรับประมวลผล event queue ที่ค้างอยู่ แต่มีขอบเขตต่างกัน:

  • update(): ประมวลผล ทุกอย่าง ใน event queue - idle tasks, events, callbacks, redraw widgets, geometry management. ใช้บ่อยครั้งอาจทำให้ UI ค้าง
  • update_idletasks(): ประมวลผลเฉพาะ idle tasks ที่ค้างอยู่ (เช่นการจัด layout, redraw) ไม่ประมวลผล event callbacks ปลอดภัยกว่า

ตัวอย่างการใช้ update_idletasks()

from tkinter import *
from tkinter import ttk
import time

win = Tk()
win.geometry("700x350")

def add_text():
    for i in range(10):
        label.config(text=f"The loops starts from 1 to {i}")
        win.update_idletasks()  # อัปเดตเฉพาะ idle tasks
        time.sleep(2)
        label.config(text=str(i))

label = Label(win, text="Original Text", font=('Arial 16'))
label.pack(pady=30)

ttk.Button(win, text="Change Text", command=add_text).pack(pady=40)

win.mainloop()

ผลลัพธ์

Label อัปเดตทีละข้อความในลูป พร้อมหน่วงเวลา 2 วินาที

ความแตกต่างระหว่าง update() และ update_idletasks() ใน Tkinter

ความแตกต่างระหว่าง update() และ update_idletasks() ใน Tkinter