Tkinter 按钮仅在单击左键时才会下沉

Posted

技术标签:

【中文标题】Tkinter 按钮仅在单击左键时才会下沉【英文标题】:Tkinter button only sinks when pressed with a left click 【发布时间】:2021-10-06 20:20:06 【问题描述】:

这里是 Tkinter 初学者

我一直在做一个虚拟鼠标项目,在创建与鼠标功能相对应的 GUI 时偶然发现了一个小问题。具体来说,我有一个我想在单击 UI 按钮时执行的功能,并且在按下按钮时要下沉,而其他按钮则保持升起。回调函数按预期适用于每个鼠标按钮,但问题是 UI 按钮仅在单击鼠标左键时才会下沉。

无论我按下哪个鼠标按钮,有没有办法让 UI 按钮下沉?例如,我想通过使用鼠标中键使 UI 按钮下沉。

这是我的代码,使用 python 3.8:

import tkinter as tk


root = tk.Tk()

switch_frame = tk.Frame(root)
switch_frame.pack()



root.geometry("230x200")

def hh(event,):
    print('This works as intended with all the mouse buttons, but the UI button only sinks when pressed with a left click')
   

switch_variable = tk.StringVar(value="off")

b1 = tk.Radiobutton(switch_frame, text='Left Click',width=15,height=6,variable=switch_variable,indicatoron=False,value="left_click")
b2 = tk.Radiobutton(switch_frame, text='Right Click',width=15,height=6,variable=switch_variable,indicatoron=False,value="right_click")
b3 = tk.Radiobutton(switch_frame, text='Double Click',width=15,height=6,variable=switch_variable,indicatoron=False,value="double_click")
b4 = tk.Radiobutton(switch_frame, text='Middle Click',width=15,height=6,variable=switch_variable,indicatoron=False,value='middle_click')

#Used binding "<Button>" to bind the function with all mouse buttons
b1.bind("<Button>", hh)
b2.bind("<Button>", hh)
b3.bind("<Button>", hh)
b4.bind("<Button>", hh)



b1.grid(column=0, row=0)   
b2.grid(column=1, row=0)   
b3.grid(column=0, row=1)   
b4.grid(column=1, row=1)  

root.call('wm', 'attributes', '.', '-topmost', '1')
root.mainloop()

感谢您的帮助!

【问题讨论】:

【参考方案1】:

您可以通过“调用”被单击的 Radiobutton 小部件来完成此操作,这是传递给偶数处理程序的 event 参数中包含的信息之一。

def hh(event,):
    print('This works as intended with *all* the mouse buttons.')
    event.widget.invoke()

【讨论】:

以上是关于Tkinter 按钮仅在单击左键时才会下沉的主要内容,如果未能解决你的问题,请参考以下文章

VueJs:按钮单击仅在单击两次时有效

只有当按下左键时,玩家才会向左移动并且不会停止

使用 tkinter 悬停时更改按钮颜色

MFC中单击button并随鼠标移动怎么实现?

delphi 模拟键盘法对当前窗口鼠标左键单击最小化怎么做?

未左键单击 Interaction.Triggers 按钮时 WPF 应用程序崩溃