区分python中的单击和双击

区分python中的单击和双击,python,pywin32,win32gui,Python,Pywin32,Win32gui,我正在处理一个著名的示例,需要同时处理单击和双击 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()

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

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
我知道这涉及到创建计时器:

  • Qt有QTimer.singleShot ()

  • PySide具有QtCore.QTimer ()

  • wx有wx定时器 ()

但是,用“纯”python(即只使用ctypes/pywin32,不使用qt、wx或gtk)实现它的最佳方法是什么?自己创建一个线程?或者启动某种windows定时器,在必要时为我生成WM_定时器消息

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


PPS我也读过一篇关于处理单点和双击是多么糟糕的观点。

你可以使用
pywin32
。设置双击标志并在单击回调中启动计时器,清除计时器回调中的双击标志,并在检测到双击后终止单击回调中的计时器

要启动计时器,请执行以下操作:

timer_id = set_timer(delay_period, callback)
要停止计时器,请执行以下操作:

kill_timer(timer_id)

让单击设置一个标志并启动一个倒计时,然后让倒计时完成后清除标志,如果在标志打开时发生单击,则是双击?@TigerhawkT3没错。在我的问题中,我链接了三个实现,它们完全符合您的建议。问题是,在没有额外libs的情况下,哪一种方法是正确的:创建一个单独的线程或使用一些windows api作为计时器。pywin32是否没有类似Tkinter的
after()
?之类的事件计时器?例如。@TigerhawkT3是的,这正是我想要的。pywin32文档是一种不直截了当的方式。谢谢