区分单击和双击与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单击时间(但我也没有必要)。