区分python中的单击和双击

时间:2015-08-02 20:55:00

标签: python pywin32 win32gui

我正在开发一个众所周知的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

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

但是在“纯”python中实现它的最佳方法是什么(仅限ctypes / pywin32,没有qt,wx或gtk)?自己创建一个帖子?或者启动某种Windows计时器,在必要时为我生成WM_TIMER消息?

PS我找到了一种正确的方法来询问用户关于双击时间here的用户偏好。

PPS我还看到了处理单击和双击here有多糟糕的看法。

1 个答案:

答案 0 :(得分:1)

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

启动计时器:

timer_id = set_timer(delay_period, callback)

停止计时器:

kill_timer(timer_id)