У меня есть текстовый виджет с горизонтальной и вертикальной полосой прокрутки. Я бы хотел, чтобы вы могли прокручивать вверх и вниз в обычном режиме, и прокручивать в сторону, удерживая shift. Я не могу понять, что связать событие <Shift-MouseWheel>
, или что должен быть обратный вызов. Вот фрагмент кода из MainWindow (Tk.TopLevel) 'ы __init__():
Tkinter bind <Shift-MouseWheel> для горизонтальной прокрутки
# console text
self.yScroll = Tk.Scrollbar(self)
self.yScroll.pack(side=Tk.RIGHT, fill=Tk.Y)
self.xScroll = Tk.Scrollbar(self)
self.xScroll.pack(side=Tk.BOTTOM, fill=Tk.X)
self.log = Tk.Text(self,
wrap=Tk.NONE,
width=80,
height=24,
yscrollcommand=self.yScroll.set,
xscrollcommand=self.xScroll.set)
self.log.pack()
self.yScroll.config(command=self.log.yview)
self.xScroll.config(command=self.log.xview, orient=Tk.HORIZONTAL)
# shift scroll binding
self.bind('<Shift-MouseWheel>',) # what do I need here?
Я успешно связала Shift-свиток простых функций печати и т.д., но я не знаю, как связать его с текстом прокрутка окна.
Вы говорите, что не знаете, как вызвать команду 'xview' виджета? –
более или менее ... Я не уверен, где передать событие и заставить его на самом деле прокрутить окно. Пробовал: 'self.bind ('', self.log.xview)' got: 'TclError: bad option" <экземпляр Tkinter.Event при 0x0572C1E8> ": должен быть moveto или scroll' –
Aaron
Если вы хотите чтобы включить регулярную горизонтальную прокрутку, или если вы получили ошибку, которую я получил с '(event.delta/120)' в качестве аргумента, хотя это все еще работает, вы можете проверить этот связанный q/a: https: // stackoverflow.com/questions/46194948/what-are-the-tkinter-events-for-horizontal-edge-scrolling-in-linux – Shule