python-3.x - Python pyplot:处理双击事件也捕获第一次单击事件
问题描述
我编写了一个代码来处理两者的不同事件 - 鼠标单击和双击。问题是,每次用户双击鼠标时,它也会触发单击,然后触发双击事件。
我希望双击只会触发一个事件!双击事件。
有什么建议么?
谢谢
解决方案
正如@ThomasKühn 所链接的,答案是创建一个软件去抖动。有几种方法可以解决,解决方案可能取决于您的应用程序(您使用的是 GUI,什么后端等)为了尽可能不可知,我使用来自的一次性线程实现了我的解决方案线程模块。
import threading
import matplotlib.pyplot as plt
DEBOUNCE_DUR = 0.25
t = None
def on_press(event):
global t
if t is None:
t = threading.Timer(DEBOUNCE_DUR, on_singleclick, [event])
t.start()
if event.dblclick:
t.cancel()
on_dblclick(event)
def on_dblclick(event):
global t
print("You double-clicked", event.button, event.xdata, event.ydata)
t = None
def on_singleclick(event):
global t
print("You single-clicked", event.button, event.xdata, event.ydata)
t = None
fig, ax = plt.subplots()
cid = fig.canvas.mpl_connect('button_press_event', on_press)
plt.show()
推荐阅读
- c - 将指针值传递给变量
- google-analytics - 对 remarketingAudiences 的 Patch & Update 请求返回 500 错误
- php - 在 Wordpress 中以编程方式获取给定请求的内容
- javascript - 我在正确的轨道上吗?在 JS 中编写一个函数,该函数必须计算对象类别中的片段数
- java - 如何将字符串转换为 lambda 函数
- mysql - 从多个表中选择时,MySQL“On 子句中的未知列”
- r - 如何识别字符串中提到的所有国家名称并进行相应拆分?
- javascript - 合并具有相似键值的对象数组并创建具有较少对象的新数组
- laravel - Laravel 查询 groubBy 条件
- bash - shell 脚本中字符“\”的用途