如何滚动非活动的Tkinter ListBox?

Jef*_*eff 1 python events scroll listbox tkinter

我正在用Python编写Tkinter GUI.它有一个用于在其下方搜索结果ListBox的条目.ListBox还有一个滚动条.如何使用鼠标和箭头键滚动才能在ListBox中工作,而无需将焦点从搜索字段中移开?IE我希望用户能够键入搜索,滚动并继续键入,而无需在窗口小部件之间来回切换.谢谢

Bry*_*ley 5

将绑定添加到用户按下向上或向下或使用向上/向下滚轮时调用列表框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")
Run Code Online (Sandbox Code Playgroud)