我试图逐行显示保存在文本文件中的用户列表,并在人们分别启动和关闭我的程序时更新它。我无法弄清楚如何更新标签,就像创建新标签一样,并删除文本文件中不再存在的标签,因为据我所知,我不能.set()
或.config()
标签上的实际文字无需更改。
到目前为止,这是我的代码。
def list_users(self):
with open("usercheck.txt", "r") as ulst:
self.usr_list = []
for line in ulst:
self.usr_list.append(line)
def online(self):
for self.name in self.usr_list:
self.onlbl = tk.Label(self, text = self.name,bg = "#42f480")
self.onlbl.grid(row = self.onlcnt,column = 5,padx = 0)
self.onlcnt +=1
使用online
运行after
功能只会创建相同标签的副本,并且不会更新标签数量。 self.onlcnt
为0
答案 0 :(得分:0)
原因可能是你在循环变量中使用了self
关键字,这导致变量保持不变:不要。
def online(self):
for name in self.usr_list:
self.onlbl = tk.Label(self, text = name,bg = "#42f480")
self.onlbl.grid(row = self.onlcnt,column = 5,padx = 0)
self.onlcnt +=1
此外,您可能希望将Labels
存储在list
中,以便日后访问:
def online(self):
try:
self.labels
except AttributeError:
self.labels = []
self.onlcnt = 0
for name in self.usr_list:
onlbl = tk.Label(self, text = name,bg = "#42f480")
onlbl.grid(row = self.onlcnt,column = 5,padx = 0)
self.labels.append(onlbl)
self.onlcnt +=1
root.after(5000, self.online) #run it again