用户界面 - 在 Spinbox Tk Python 中启用鼠标滚轮



我想知道是否有一种聪明的方法可以在 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')

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

对于后代,如果你能负担得起,ttk.Spinbox内置鼠标滚轮滚动支持。

最新更新