我正在使用Tkinter列表框小部件来跟踪活动用户列表。当用户登录和注销时,此小组件会不断更新。每次我更新列表框时,我都会清除整个内容并重新填充它们。每次我这样做,当前的选择都会丢失。我想添加一些逻辑来重新选择在更新列表框之前选择的项目(如果选择了一个项目)。我能够使用get(Tkinter.ACTIVE)获取当前选择的值,并且我能够在使用索引(Tkinter.END)插入列表时获取索引。但是,我尝试使用selection_set()和activate(),但都不起作用。我之前尝试过selection_clear(),调用focus()和event_generate(“<>”)并且没有任何效果。这是我的代码:
def update_userlist(self):
curselection = self.listbox.get(Tkinter.ACTIVE)
print_msg("curselection == " + curselection)
self.listbox.delete(0, Tkinter.END)
for user in self.users:
self.listbox.insert(Tkinter.END, user)
if user == curselection:
selectionindex = self.listbox.index(Tkinter.END)
print_msg("selectionindex == " + str(selectionindex))
else:
selectionindex = None
self.listbox.update()
if selectionindex:
self.listbox.selection_clear(0, Tkinter.END)
self.listbox.selection_set(selectionindex)
self.listbox.activate(selectionindex)
self.listbox.focus()
self.listbox.event_generate("<<ListboxSelect>>")
self.chatframe.update()
我正在使用Python 2.7。重新填充列表框后,如何重新选择以前选择的值?