区分单击和双击与matplotlib
问题描述:
我试图抓住单击和双击我的身影。区分单击和双击与matplotlib
如另一个answer所述,event
包含event.dblclick
,它至少在版本1.4.2中为False或True,因此可以获得双击。
唯一的问题是,区分单击和双击并不容易,因为双击该事件会被触发两次。第一次是event.dblclick=False
,第二次是event.dblclick=True
。
有没有解决这个问题的方法?我看到关于qt的相同问题在here讨论。
答
你需要一个软件去抖动器。
基本上,您在第一次点击时启动计时器。如果计时器用完,则继续处理单击事件。如果在计时器内检测到第二次点击,则处理双击事件。
如果需要,这实际上可以扩展到n次点击。我发现了三键事件的一些用途。
Here是在wxPython中实现的一个。应该比较容易移植到matplotlib。另外,如果你在Windows上,我建议使用用户的双击速度为你的计时器(控制面板:鼠标)。您可以访问它:
get_double_click_time():
""" Gets the Windows double click time in ms """
from ctypes import windll
return int(windll.user32.GetDoubleClickTime())
我还没有想出如何抓住从Mac或Linux平台的D单击时间(但我也没有必要)。