更新Tkinter列表框而不退出并重新进入?

时间:2014-03-28 18:00:21

标签: python listbox tkinter

Tkinter初学者,以及一般的python noob。

我有一个程序将项目附加到列表并在列表框中显示该列表。它会在重新加载时正确显示所有项目,但我希望新值在列表框中可见而无需重新加载。这是我的尝试。它不会返回任何错误,但它也不起作用。

我在Mac OSX上运行2.7。记住,我对这个东西很新。

def OnPressEnter(self,event):
    hold = self.entryVariable.get()
    hold = str(hold)
    with open('GoalTrak/StudentList.txt', 'a') as textfile: #This appends students to the already existing document of students
        if (hold) not in student_list_temp:
            student_list_temp.append(hold[:-1])
            textfile.write(hold + '\n')
            self.labelVariable.set( self.entryVariable.get() + " added" )
            self.StudentListDisplay.insert(Tkinter.END,hold[:-1])
        else:
            self.labelVariable.set( self.entryVariable.get() + " is already in list" )
        textfile.close()
    self.entry.focus_set()
    self.entry.selection_range(0, Tkinter.END)

提前致谢!

编辑:这是我定义列表框的代码:

self.StudentListDisplay = Tkinter.Listbox(self)
    self.StudentListDisplay.grid(row=2,column=0,columnspan=2,sticky='W')
    for student in student_list_temp:
        self.StudentListDisplay.insert(Tkinter.END, student)

1 个答案:

答案 0 :(得分:1)

我使用的一种方法是删除列表框中的所有内容并将新列表放入。例如

listbox.delete(0, END)
for i in range(len(new_list)):
    listbox.insert(END,new_list[i][0])

这将删除当前框中的所有内容,并将新列表放入。

希望这有帮助,如果您有任何问题请发表评论。