Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Khác biệt giữa update và update_idletasks trong Tkinter

Phương thức Update xử lý tất cả tác vụ nhàn rỗi đang chờ, sự kiện chưa duyệt, gọi hàm và callback. Phương thức này áp dụng cập nhật và xử lý tất cả sự kiện hoặc tác vụ như vẽ lại widget, quản lý hình học, cấu hình thuộc tính widget, v.v.

Nó cũng đảm bảo nếu ứng dụng có tác vụ chờ, nó sẽ cập nhật hoặc làm mới giá trị ảnh hưởng đến toàn bộ ứng dụng. Dùng update cho một tác vụ chờ đơn lẻ không hay, do đó Tkinter cung cấp phương thức update_idletasks(). Nó chỉ cập nhật tác vụ nhàn rỗi chờ ổn định hoặc không cập nhật trong ứng dụng vì lý do nào đó. Nó gọi tất cả sự kiện chờ mà không xử lý sự kiện hoặc callback khác.

Phương thức update() và update_idletask() hữu ích xử lý tác vụ chờ hoặc nhàn rỗi. Tuy nhiên, khác biệt duy nhất giữa update() và update_idletasks() là update() xử lý tất cả sự kiện trong ứng dụng, trong khi update_idletasks() chỉ xử lý sự kiện không chạy hoặc ổn định.

Ví dụ

Ta hiểu việc dùng và ứng dụng phương thức update_idletasks() qua ví dụ này.

# Import thư viện tkinter
from tkinter import *
from tkinter import ttk
import time

# Tạo instance của frame tkinter
win = Tk()

# Đặt kích thước cửa sổ Tkinter
win.geometry("700x350")

def add_Text():
    for i in range(10):
        label.config(text="The loops starts from 1 to " + str(i))
        # Chờ hai giây
        win.update_idletasks()
        time.sleep(2)
        label.config(text=i)

# Thêm văn bản label
label = Label(win, text="Original Text", font=('Aerial 16'))
label.pack(pady=30)

# Thêm nút cập nhật văn bản Label
ttk.Button(win, text="Change Text", command=add_Text).pack(pady=40)

win.mainloop()

Kết quả

Chạy mã trên sẽ hiển thị cửa sổ với widget Label và nút.

Khác biệt giữa update và update_idletasks trong Tkinter

Khi nhấn nút, widget Label tự động cập nhật trong phạm vi vòng lặp cho trước.

Khác biệt giữa update và update_idletasks trong Tkinter