如何从文本fi动态添加、删除在for循环中创建的标签

2024-04-18 21:45:07 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图显示保存在文本文件中的用户列表,并在用户分别启动和关闭我的程序时进行更新。我不知道如何更新标签,如创建新标签和删除文本文件中不再存在的标签,因为据我所知,我不能.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

使用after运行online函数只会创建相同标签的副本,而不会更新标签的数量。self.onlcnt是0


Tags: 用户nameinselfforusrdefline
1条回答
网友
1楼 · 发布于 2024-04-18 21:45:07

原因可能是在循环变量中使用了self关键字,这会使变量保持不变:don't

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

相关问题 更多 >