开发者

How to scroll an inactive Tkinter ListBox?

I'm writing a Tkinter GUI in Python. It has an Entry for searching with a results ListBox below it. The ListBox also has a Scrollbar. How can I get scrolling with the mouse and arrow keys to work in the ListBox w开发者_高级运维ithout switching focus away from the search field? IE I want the user to be able to type a search, scroll around, and keep typing without having to tab back and forth between widgets. Thanks


Add bindings to the entry widget that call the listbox yview and/or see commands when the user presses up and down or uses the up/down scrollwheel.

For example, you can do something like this for the arrow keys:

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")
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜