Tkinter: 绑定额外的鼠标按钮
有没有办法绑定除了左键、中键和右键以外的鼠标按钮?比如说微软的Intellimouse或者雷蛇的Deathadder上的侧边按钮。有些程序把它们叫做Mouse4和Mouse5,但我试过
self.parent.bind("<Button-1>", lambda event:print('left'))
self.parent.bind("<Button-2>", lambda event:print('middle'))
self.parent.bind("<Button-3>", lambda event:print('right'))
self.parent.bind("<Button-4>", lambda event:print('prev'))
self.parent.bind("<Button-5>", lambda event:print('next'))
结果只有前三个按钮能用。
2 个回答
0
canvas.bind("<MouseWheel>", lambda event: canvas.yview_scroll(event.delta / 60, "units"))
对于Tkinter 8.6版本,简单来说,答案是否定的。Tkinter可以获取你鼠标不同按钮的整数值,但这些细节的绑定是行不通的。
你可以通过Button事件类型打印出与鼠标按钮点击相对应的整数:
widget_variable.bind("<Button>", lambda event: print(event.num))
但是我的实验表明,这些整数不能作为绑定的细节。你只能把所有“未分配”的按钮绑定到一个处理程序上。如果你想处理按钮1和3,这部分代码应该放在后面,并且需要加上add = "+"
:
canvas.bind("<Button>", lambda event: print("success"))
canvas.bind("<Button-1>", lambda event: None, add = "+")
canvas.bind("<Button-2>", lambda event: None)
canvas.bind("<Button-3>", lambda event: None, add = "+")
不过在类Linux的机器上,MouseWheel事件是无法使用的,正如在官方文档中所写,它被细节4和5替代,这两个细节用于绑定鼠标滚轮向下和向上的滚动。因此,在Windows(或者类似的MacOS)上,你会使用细节4和5来处理Linux:
canvas.bind("<Button-5>", lambda event: canvas.yview_scroll(1, "units"))
canvas.bind("<Button-4>", lambda event: canvas.yview_scroll(-1, "units"))
1
我认为Tkinter只支持前面三个鼠标按钮(正如你发现的那样)。我遇到过一些情况,光靠这三个按钮不够用,这时候我发现把鼠标按钮和键盘按键结合起来使用是个不错的解决办法。就我所见,Tkinter的文档里只提到了前面三个按钮,而这个网站(我经常用来查这种问题)也没有提到其他按钮。希望这能帮到你。