如何滚动非活动的Tkinter ListBox?
我正在用Python写一个Tkinter的图形界面。界面上有一个输入框用来搜索,下面有一个结果列表框(ListBox)。这个列表框还有一个滚动条。请问我怎么才能让用户在不切换输入框焦点的情况下,用鼠标和方向键在列表框中滚动呢?也就是说,我希望用户可以输入搜索内容、滚动列表,同时继续输入,而不需要在不同的控件之间来回切换。谢谢!
1 个回答
6
给输入框添加一些绑定,这样当用户按上下箭头键或者使用上下滚轮时,就会调用列表框的 yview
和/或 see
命令。
比如,你可以这样处理箭头键的操作:
class App(Tkinter.Tk):
def __init__(self):
Tkinter.Tk.__init__(self)
self.entry = Tkinter.Entry()
self.listbox = Tkinter.Listbox()
self.entry.pack(side="top", fill="x")
self.listbox.pack(side="top", fill="both", expand=True)
for i in range(100):
self.listbox.insert("end", "item %s" % i)
self.entry.bind("<Down>", self.OnEntryDown)
self.entry.bind("<Up>", self.OnEntryUp)
def OnEntryDown(self, event):
self.listbox.yview_scroll(1,"units")
def OnEntryUp(self, event):
self.listbox.yview_scroll(-1,"units")