【问题标题】:Updating Tkinter listbox without quitting and re-entering?在不退出和重新输入的情况下更新 Tkinter 列表框?
【发布时间】:2014-05-08 08:10:42
【问题描述】:

这里是 Tkinter 初学者,和一般的 python 菜鸟。

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

我在 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)

【问题讨论】:

  • 你能告诉我们你定义列表框的代码吗?
  • @AlexThornton 更新了!
  • “无需重新加载”是什么意思?
  • @mgilson 列表框显示更新的唯一方法是我退出程序并重新启动它。
  • 你怎么知道它不起作用?您是否验证了正在调用将变量添加到列表的代码?当然可以随时在列表框中插入项目,所以如果它不起作用,也许该代码永远不会被调用?

标签: python listbox tkinter


【解决方案1】:

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

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

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

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

【讨论】:

  • 我不确定,但我有几个想法。尝试从hold[:-1] 中删除':'。我认为这是你的问题。这与我之前发布的内容无关。让我知道这是否有效,我将编辑我的答案以通过更多解释来反映正确答案。
  • 它仍然有效,但那不是指定一个不可能的开始位置吗?此外,它并没有解决我原来的问题。
  • list[:-1] 返回没有最后一个元素的整个列表。 list[-1] 只返回最后一个元素。您是否为该部分中的所有保留都这样做了?
  • 还有一件事。您可以删除 textfile.close() 行,当使用 with 语句时这是不必要的。
  • 我能看看self.entryVariable的定义吗?
猜你喜欢
  • 2012-07-17
  • 2021-03-25
  • 1970-01-01
  • 2018-07-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多