python - Tkinter 将 <Shift-MouseWheel> 绑定(bind)到水平滚动

标签 python user-interface events scroll tkinter

我有一个带有水平和垂直滚动条的文本小部件。我希望能够正常上下滚动,并在按住 shift 的同时左右滚动。我不知道要绑定(bind)什么 <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 绑定(bind)到简单的打印功能等,但我不确定如何将它绑定(bind)到文本框滚动。

最佳答案

您需要让绑定(bind)调用您自己的函数,然后让该函数调用 xview_scroll小部件的方法:

self.bind('<Shift-MouseWheel>', self.scrollHorizontally) 
...

def scrollHorizontally(self, event):
    self.log.xview_scroll((event.delta/120), "units")

您可能需要调整每次单击滚轮时要滚动的单位数(或“页数”)。

This answer有关于事件的 delta 属性的平台差异的更多信息。

关于python - Tkinter 将 <Shift-MouseWheel> 绑定(bind)到水平滚动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31254729/

相关文章:

python - 如何将所有 URL 以 "www"开头的请求重定向到裸域?

python - 在 wxPython 中的两个面板之间传递元组

user-interface - 如何让 GUI 看起来漂亮

c++ - 在主窗口中显示 QImage

python - 意外的第 1 行语法错误 :

Python:如何两次导入包?

html - 基于高度、垂直对齐、基于百分比的 img 使用显示 : table/table-cell

events - 在 Outlook 中捕获对 MailItem.SendUsingAccount 属性的更改

ASP.NET GridView 如何取消更新

c# - 在 MVC 中处理来自共享控件的事件