在 Spinbox Tk Python 中启用鼠标滚轮

nor*_*ok2 5 python user-interface tk-toolkit

我想知道是否有一种聪明的方法可以在 Python 中的 Tk 小部件“Spinbox”中启用鼠标滚轮。

到目前为止,我发现的唯一明智的解决方案是派生一个具有所需功能的新 spinbox 类:

class Spinbox(tk.Spinbox):
    def __init__(self, *args, **kwargs):
        tk.Spinbox.__init__(self, *args, **kwargs)
        self.bind('<MouseWheel>', self.mouseWheel)
        self.bind('<Button-4>', self.mouseWheel)
        self.bind('<Button-5>', self.mouseWheel)

    def mouseWheel(self, event):
        if event.num == 5 or event.delta == -120:
            self.invoke('buttondown')
        elif event.num == 4 or event.delta == 120:
            self.invoke('buttonup')
Run Code Online (Sandbox Code Playgroud)

但考虑到这可能是预期的行为,我怀疑有更好的解决方案。

eta*_*ger 1

对于后代,如果您负担得起的话,ttk.Spinbox可以内置鼠标滚轮滚动支持。