Я пишу Tkinter GUI в Python. У него есть запись для поиска с приведенным ниже списком ListBox. В ListBox также есть панель прокрутки. Как получить прокрутку с помощью мыши и клавиш со стрелками для работы в ListBox без переключения фокуса от поля поиска? IE Я хочу, чтобы пользователь мог набирать поиск, прокручивать и продолжать печатать, не забирая между виджетами. СпасибоКак прокрутить неактивный Tkinter 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")
Это имеет смысл. Но как я могу контролировать их явно? До сих пор я только что использовал mylistbox.config (yscrollcommand = myscrollbar.set) и myscrollbar.config (command = mylistbox.yview). – Jeff
@Jeff: Я добавил код примера в свой ответ, чтобы ответить на ваш вопрос. –
спасибо! различные веб-сайты сделали это звуком сложным, но с вашим примером это очень просто. – Jeff
Я думаю, я мог бы просто привязать кнопки мыши и стрелок, чтобы сделать прокрутку вручную ... HTTP: // WWW .daniweb.com/code/snippet217059.html объясняет события прокрутки мыши, а клавиши со стрелками просты. Поэтому теперь мне просто нужно знать, к чему их привязать. – Jeff