Python pyplot: обработка события двойного щелчка ловит также событие первого щелчка - PullRequest
0 голосов
/ 29 ноября 2018

Я написал код, который обрабатывает различные события как для одного щелчка мышью, так и для двойного щелчка.Проблема в том, что каждый раз, когда пользователь дважды щелкает мышью, он также запускает один щелчок, а после этого запускает событие двойного щелчка.

Я хочу, чтобы двойной щелчок вызывал только одно событие !!событие двойного щелчка.

Есть предложения?

Спасибо

1 Ответ

0 голосов
/ 29 ноября 2018

Как говорит @ ThomasKühn, ответ состоит в том, чтобы создать программную версию.Есть несколько способов сделать это, и решение, вероятно, зависит от вашего приложения (используете ли вы графический интерфейс, какой бэкэнд и т. Д.). Чтобы быть как можно более независимым, я реализовал свое решение, используя одноразовый поток из резьбового модуля .

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()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...