如何动态添加从文本文件中删除和删除for循环中创建的标签
问题描述:
我试图显示保存在逐行文本文件中的用户列表,并在人们启动并关闭我的程序时更新它分别。我不知道如何更新标签创建新的和删除不再出现在文本文件中,因为我不能.set()
或.config()
他们据我所知,因为标签上的实际文本没有必须改变。如何动态添加从文本文件中删除和删除for循环中创建的标签
这是我的代码到目前为止。
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
答
原因可能是您在循环变量中使用了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
+0
不知道是否它的一个不同版本的python,但NameError是AttributeError:对我来说。我不知道如何动态更新标签,因为它们仍然由“onlbl = ...”中的for循环创建。我需要标签每隔几秒更新一次。对不起,如果我在这里丢失了一些明显的东西 –
这将有助于如果您发布了[MCVE],包括一个小样本“usercheck。 txt“,以便我们可以运行程序并重现问题。另外,“当人们分别启动并关闭我的程序时进行更新”有点不清楚。你的意思是人们何时启动并关闭这个Tkinter程序本身,或者你是在谈论其他一些程序? –
我的意思是tkinter程序本身。有问题的文本文件只是不同行上的名称列表,例如: 道格拉斯 本 詹姆斯。格式不真正进行评论。尽管每个名字都有自己的路线。 –