簡體   English   中英

在python中更新tkinter標簽

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM