我有多个按钮在tkinter窗口,但在一台计算机上,我们只有一个鼠标指针在一个位置,我怎么能像在触摸屏上一样同时按下多个按钮呢?在
下面是我要做的代码示例
#!/usr/bin/python
import Tkinter as Tk
def button_pressed_cb(event):
print("You pressed " + event.widget['text'])
def button_release_cb(event):
print("You released " + event.widget['text'])
root = Tk.Tk()
button1 = Tk.Button(root, text="button1")
button1.pack()
button2 = Tk.Button(root, text="button2")
button2.pack()
button1.bind("<ButtonPress>", button_pressed_cb)
button1.bind("<ButtonRelease>", button_release_cb)
button2.bind("<ButtonPress>", button_pressed_cb)
button2.bind("<ButtonRelease>", button_release_cb)
root.mainloop()
在执行这个之后,我得到了一个类似这样的输出示例
^{pr2}$我想实现的是能够生成发生在这个序列中的事件
You pressed button1
You pressed button2
You released button2
You released button1
有人知道什么是最好的方法吗?非常感谢你。在
如果您只想调用回调,那么您可以这样做,毕竟它们是普通的Python函数。在
如果您询问如何创建并分派事件,可以使用
event_generate
方法。不幸的是,我不知道这方面的任何tkinter文档,因此您必须查看Tcl/Tk docs。但基本思路是:when
参数将事件放在事件队列的末尾,而不是立即处理它们,因此它们不会干扰重画或实际的鼠标事件。这里并不是真的有必要;我把它包含进来主要是为了展示如何将这些Tcl参数(-when tail
)映射到tkinter。在如果您希望它通过正常的分派而不是直接发送到按钮,那么可以调用}参数,这些参数将在按钮内部命中test。在
root.event_generate
并传递x
和{好吧,我找到了解决办法。我做了额外的检查,如果用户在点击一个按钮之前按下并按住ctrl,该按钮将锁定到该按下状态。然后用户可以去点击其他按钮等。用户可以再次点击该按钮解锁。在
我还为用户添加了一条悬停消息,告诉用户可以使用ctrl锁定按钮并实现多键按下。在
这是新密码
现在,悬停信息是这样的, https://ibb.co/dEb6Bn
当用户按住ctrl键并单击按钮1,然后单击按钮2时,它看起来是这样的, https://ibb.co/eVzRBn
现在,我可以很容易地生成这些事件序列
^{pr2}$相关问题 更多 >
编程相关推荐