Как прокрутить неактивный Tkinter ListBox? - PullRequest
1 голос
/ 24 августа 2010

Я пишу графический интерфейс Tkinter на Python.Он имеет запись для поиска с ListBox результатов под ним.ListBox также имеет полосу прокрутки.Как заставить прокрутку с помощью мыши и клавиш со стрелками работать в ListBox, не переключая фокус с поля поиска?IE Я хочу, чтобы пользователь мог набирать поиск, прокручивать и продолжать печатать, не переключаясь между виджетами.Спасибо

1 Ответ

5 голосов
/ 24 августа 2010

Добавление привязок к виджету ввода, который вызывает команды listbox 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")
...