У меня проблема при обновлении моего интерфейса, (уменьшенный) код выглядит следующим образом:
##here: two nested for loops
f = Frame(master,height=600,width=200, bd=1, relief=SUNKEN)
f.grid(row=rowN, column=colN, pady=15, padx= 0)
Label(f, text="Mesa: " + str(lOfKeys[count])).pack(side = TOP)
scrollbar = Scrollbar(f, orient=VERTICAL)
listbox = Listbox(f, yscrollcommand=scrollbar.set, width=19, bg="white")
listboxFrames[listbox] = f
tableRel[listbox] = lOfKeys[count]
scrollbar.config(command=listbox.yview)
scrollbar.pack(side=RIGHT, fill=Y)
listbox.pack(side=TOP)
listbox.bind("<Double-Button-1>", hideOrder)
listbox.bind("<Return>", hideOrder)
index = 0
listbox.delete(0, END)
##for loop to fill the listbox
if len(listbox.get(0, END)) == 0:
print "forget" + str(lOfKeys[count])
f.grid_forget()
count += 1
Приведенное выше решение работает нормально, когда я заново запускаю программу, но если код вызывается master.after
, это не приводит к исчезновению фрейма, напротив, оно фактически дублирует его иногда ведет себя другими странными манерами.
Мне интересно, каков наилучший подход к этому, учитывая, что списки постоянно заполняются и очищаются.