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

Tạo GUI tự động cập nhật bằng Tkinter trong Python


Cửa sổ GUI có nhiều điều khiển như label (nhãn), button (nút), text box (hộp văn bản), v.v. Đôi khi chúng ta muốn nội dung của các điều khiển như label tự động cập nhật trong khi đang xem cửa sổ.

Chúng ta có thể dùng after() để chạy một hàm sau một khoảng thời gian nhất định. Ví dụ, 1000 mili giây nghĩa là 1 giây. Hàm được gọi liên tục sau một khoảng thời gian sẽ cập nhật văn bản hoặc bất kỳ cập nhật nào bạn muốn.

Chúng ta có một label trên cửa sổ. Chúng ta muốn văn bản của label tự động cập nhật sau 1 giây. Để ví dụ dễ hiểu, giả sử chúng ta muốn label hiển thị một số ngẫu nhiên từ 0 đến 1000. Chúng ta muốn số này thay đổi sau mỗi 1 giây.

Chúng ta có thể làm điều này bằng cách định nghĩa một hàm sẽ thay đổi văn bản của label thành một số ngẫu nhiên giữa 0 và 1000. Chúng ta có thể gọi hàm này liên tục sau khoảng cách 1 giây bằng after().

Ví dụ

from tkinter import *
from random import randint

root = Tk()
lab = Label(root)
lab.pack()

def update():
    lab['text'] = randint(0, 1000)
    root.after(1000, update)  # chạy lại chính nó sau 1000 ms

# chạy lần đầu
update()
root.mainloop()

Đoạn mã này sẽ tự động thay đổi văn bản của label thành một số mới sau 1000 mili giây. Bạn có thể thay đổi khoảng thời gian theo nhu cầu. Hàm update có thể được sửa đổi để thực hiện cập nhật cần thiết.

root.after(1000, update)

Dòng mã này thực hiện chức năng chính là gọi lại hàm update().

Tham số đầu tiên trong root.after() chỉ định khoảng thời gian tính bằng mili giây sau đó bạn muốn hàm được gọi lại.

Tham số thứ hai chỉ định tên của hàm sẽ được gọi lại.