如何滚动非活动的Tkinter ListBox?

时间:2010-08-24 18:20:40

标签: python events listbox scroll tkinter

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

1 个答案:

答案 0 :(得分: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")