Python pyplot:处理双击事件也会捕获第一个单击事件

ere*_*rez 2 matplotlib python-3.x

我写了一个代码来处理不同的事件 - 鼠标单击和双击。问题是,每次用户双击鼠标时,它也会触发单击,然后触发双击事件。

我希望双击只会触发一个事件!!双击事件。

有什么建议?

谢谢

Diz*_*ahi 5

正如@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()
Run Code Online (Sandbox Code Playgroud)