如何从文本文件

时间:2017-03-04 11:37:40

标签: python python-3.x tkinter

我试图逐行显示保存在文本文件中的用户列表,并在人们分别启动和关闭我的程序时更新它。我无法弄清楚如何更新标签,就像创建新标签一样,并删除文本文件中不再存在的标签,因为据我所知,我不能.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

1 个答案:

答案 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