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 按钮仅在单击左键时才会下沉的主要内容,如果未能解决你的问题,请参考以下文章