Tkinter 将 <Shift-MouseWheel> 绑定到水平滚动
Tkinter bind <Shift-MouseWheel> to horizontal scroll
我有一个带有水平和垂直滚动条的文本小部件。我希望能够正常上下滚动,并在按住 shift 的同时左右滚动。我不知道将 <Shift-MouseWheel>
事件绑定到什么,或者回调应该是什么。这是 mainWindow(Tk.TopLevel) 的 __init__():
的代码片段
# 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-scroll 绑定到简单的打印功能等,但我不确定如何将它绑定到文本框滚动。
您需要让绑定调用您自己的函数,然后让该函数调用小部件的 xview_scroll 方法:
self.bind('<Shift-MouseWheel>', self.scrollHorizontally)
...
def scrollHorizontally(self, event):
self.log.xview_scroll((event.delta/120), "units")
您可能需要调整每次单击滚轮时要滚动的单位数(或 "pages")。
This answer 有关于事件 delta
属性的平台差异的更多信息。
我有一个带有水平和垂直滚动条的文本小部件。我希望能够正常上下滚动,并在按住 shift 的同时左右滚动。我不知道将 <Shift-MouseWheel>
事件绑定到什么,或者回调应该是什么。这是 mainWindow(Tk.TopLevel) 的 __init__():
# 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-scroll 绑定到简单的打印功能等,但我不确定如何将它绑定到文本框滚动。
您需要让绑定调用您自己的函数,然后让该函数调用小部件的 xview_scroll 方法:
self.bind('<Shift-MouseWheel>', self.scrollHorizontally)
...
def scrollHorizontally(self, event):
self.log.xview_scroll((event.delta/120), "units")
您可能需要调整每次单击滚轮时要滚动的单位数(或 "pages")。
This answer 有关于事件 delta
属性的平台差异的更多信息。