在 python 中区分单击和双击

Differentiate between single and double click in python

我正在处理一个著名的 SysTrayIcon 示例,需要同时处理单击和双击。

def notify(self, hwnd, msg, wparam, lparam):
    if lparam==win32con.WM_LBUTTONDBLCLK:
        self.execute_menu_option(self.default_menu_index + self.FIRST_ID)
    elif lparam==win32con.WM_RBUTTONUP:
        self.show_menu()
    elif lparam==win32con.WM_LBUTTONUP:
        pass
    return True

我知道这涉及创建一个计时器:

但是在 "pure" python 中实现它的最佳方法是什么(即只有 ctypes/pywin32,没有 qt、wx 或 gtk)?自己创建线程?或者启动某种 windows 计时器,它会在必要时为我生成 WM_TIMER 消息?

PS 我找到了一个合适的方法来询问 windows 用户对双击时间的偏好 here.

PPS 我也读过一篇关于处理单击和双击有多糟糕的评论 here

您可以使用 pywin32timer module。在点击回调中设置双击标志并启动定时器,在定时器回调中清除双击标志,检测到双击后在点击回调中杀死定时器。

启动计时器:

timer_id = set_timer(delay_period, callback)

要停止计时器:

kill_timer(timer_id)