[英]Updating tkinter labels in python
我正在通過將服務器的根實例傳遞到Tkinter窗口來為Python服務器提供帶tkinter的GUI。 問題在於使標簽中的信息保持最新。
例如,服務器具有一個“用戶”列表,其中包含已登錄的用戶。 為初始列表執行此操作非常簡單:
string = ""
for user in self.server.Users:
string += user + "\n"
Label(master, text=string)
但這只會做一次。 之后,我應該如何更新列表? 我可以添加一個“更新用戶”按鈕,但是我需要列表進行自我更新。
您可以在服務器實例上使用回調。 安裝一個回調,該回調將在用戶列表更改時更新標簽。
如果您無法更改服務器代碼,則需要每隔幾秒鍾輪詢一次列表以獲取更新。 您可以使用Tkinter事件系統來跟蹤更新。
def user_updater(self):
self.user_updater_id = self.user_label.after(1000, self.user_updater)
lines = []
for user in self.server.Users:
lines.append(user)
self.user_label["text"] = "\n".join(lines)
def stop_user_updater(self):
self.user_label.after_cancel(self.user_updater_id)
您可以通過設置其對應的StringVar
對象的文本來更改Label
的文本,例如:
from tkinter import *
root = Tk()
string = StringVar()
lab = Label(root, textvariable=string)
lab.pack()
string.set('Changing the text displayed in the Label')
root.mainloop()
請注意使用set
功能更改Label lab
的顯示文本。
見New Mexico Tech
這個Tkinter的參考主題以獲取更多信息。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.