2014-03-28 30 views
1

Tkinter初学者在这里,和一般的蟒蛇noob。更新Tkinter列表框没有退出并重新进入?

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

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

你能告诉我们你定义你的ListBox的代码吗? –

+0

@AlexThornton更新! –

+0

你是什么意思“无需重新加载”? – mgilson

回答

1

一种方法,我用的是删除列表框中的一切,并把在新的列表例如

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

目前这一切都删除在框中并提出在新的列表。

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

+0

你知道我为什么原来的代码不起作用吗? –

+0

我不确定,但我有几个想法。尝试从'hold [: - 1]'中删除':'。我认为这是你的问题。它与我之前发布的内容无关。让我知道如果这个工程,我会编辑我的答案,以更多的解释反映正确的答案。 – Anthony

+0

它仍然有效,但不会指定一个不可能的开始位置?此外,它并没有解决我原来的问题。 –