2024-04-19 19:42:37 发布
网友
在监视过程中出现双击时,我面临一个问题。“有谁能提供一个代码,告诉我如何使用pynput在python中监视鼠标双击?”
当您希望同时获取single click时,没有简单的方法来获取double click
single click
double click
要控制double click(不控制single click),您可以记住was previous click的时间并与current click进行比较。如果差异为0.3s,则可以将其视为double click
previous click
current click
0.3s
代码仅用于左键单击
from pynput.mouse import Listener, Button import time previous_left = 0 def on_click(x, y, button, pressed): global previous_left #text = 'Pressed' if pressed else 'Released' #print('{0} {1} at {2}'.format(text, button, (x, y))) double_click_left = False # double click left button if pressed and button == Button.left: current_left = time.time() diff_left = current_left - previous_left print('diff left:', diff_left) if diff_left < 0.3: print('double click left') double_click_left = True previous_left = current_left # other code if double_click_left: # Stop listener return False with Listener(on_click=on_click) as listener: # ... some code ... listener.join()
其他按钮的代码与此类似
from pynput.mouse import Listener, Button import time previous_left = 0 previous_right = 0 previous_middle = 0 def on_click(x, y, button, pressed): global previous_left global previous_right global previous_middle #text = 'Pressed' if pressed else 'Released' #print('{0} {1} at {2}'.format(text, button, (x, y))) double_click_left = False double_click_right = False double_click_middle = False # double click left button if pressed and button == Button.left: current_left = time.time() diff_left = current_left - previous_left print('diff left:', diff_left) if diff_left < 0.3: print('double click left') double_click_left = True previous_left = current_left # double click right button if pressed and button == Button.right: current_right = time.time() diff_right = current_right - previous_right print('diff right:', diff_right) if diff_right < 0.3: print('double click right') double_click_right = True previous_right = current_right # double click middle button if pressed and button == Button.middle: current_middle = time.time() diff_middle = current_middle - previous_middle print('diff middle:', diff_middle) if diff_middle < 0.3: print('double click middle') double_click_middle = True previous_middle = current_middle # other code if double_click_left: # Stop listener return False with Listener(on_click=on_click) as listener: # ... some code ... listener.join()
但问题是,当您还想控制单次单击时,因为它会在第一次单击后运行一些函数^{,通知您它不是双击而是单次单击-它需要线程计时器,或者需要运行其他运行循环的线程,该线程始终将当前时间与previous_left进行比较如果在previous_left之后没有点击0.3s,则将其视为单次点击
previous_left
我没有这种情况的例子
当您希望同时获取
single click
时,没有简单的方法来获取double click
要控制
double click
(不控制single click
),您可以记住wasprevious click
的时间并与current click
进行比较。如果差异为0.3s
,则可以将其视为double click
代码仅用于左键单击
其他按钮的代码与此类似
但问题是,当您还想控制单次单击时,因为它会在第一次单击后运行一些函数^{,通知您它不是双击而是单次单击-它需要线程计时器,或者需要运行其他运行循环的线程,该线程始终将当前时间与
previous_left
进行比较如果在previous_left
之后没有点击0.3s,则将其视为单次点击我没有这种情况的例子
相关问题 更多 >
编程相关推荐