2010-08-24 6 views
1

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

+0

Я думаю, я мог бы просто привязать кнопки мыши и стрелок, чтобы сделать прокрутку вручную ... HTTP: // WWW .daniweb.com/code/snippet217059.html объясняет события прокрутки мыши, а клавиши со стрелками просты. Поэтому теперь мне просто нужно знать, к чему их привязать. – Jeff

ответ

4

Добавить привязки к виджету ввода, который вызывает список 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") 
+0

Это имеет смысл. Но как я могу контролировать их явно? До сих пор я только что использовал mylistbox.config (yscrollcommand = myscrollbar.set) и myscrollbar.config (command = mylistbox.yview). – Jeff

+0

@Jeff: Я добавил код примера в свой ответ, чтобы ответить на ваш вопрос. –

+0

спасибо! различные веб-сайты сделали это звуком сложным, но с вашим примером это очень просто. – Jeff