Tkinter列表框以编程方式更改突出显示项目

时间:2014-11-26 20:43:55

标签: python tkinter

我在Tkinter中有一个列表框,我想在用户按下一个按键时以编程方式更改所选项目。我有keyPressed方法,但如何在按下键的方法中更改列表框中的选择?

2 个答案:

答案 0 :(得分:6)

因为列表框允许单个与连续与不同的选择,并且还允许活动元素,所以这个问题是不明确的。 The docs解释了你可以做的所有不同的事情。

selection_set方法将项​​添加到当前选择中。根据您的选择模式,这可能会也可能不会取消选择其他项目。

如果您想保证始终只选择一个项目,可以使用selection_clear(0, END)清除选择,然后selection_set清除一个项目。

如果您还要激活所选项目,请在设置项目后调用activate

要了解不同的选择模式,以及活跃和选择的互动方式,请阅读文档。

答案 1 :(得分:0)

如果您还需要触发ListboxSelect事件,请使用以下代码:

# create
self.lst = tk.Listbox(container)
# place
self.lst.pack()
# set event handler
self.lst_emails.bind('<<ListboxSelect>>', self.on_lst_select)

# select first item
self.lst.selection_set(0)
# trigger event manually
self.on_lst_select()

# event handler
def on_lst_select(self, e = None):
   # Note here that Tkinter passes an event object to handler
   if len(self.lst.curselection()) == 0:
       return
   index = int(self.lst.curselection()[0])
   value = self.lst.get(index)
   print (f'new item selected: {(index, value)}')