因此,我一直在尝试制作一个简单的程序,在单击鼠标右键时,使鼠标以0.5秒的间隔单击鼠标左键3次。但是,当我启动该程序并单击右键时,该程序会执行所要执行的操作,但也会开始严重滞后25秒钟。滞后后,我尝试关闭程序,它冻结,迫使我通过任务管理器关闭程序。
代码如下:
import time
from pynput.mouse import Button, Controller, Listener
mouse = Controller()
def on_click(x, y, button, pressed):
if button == Button.right:
num = 3
while num > 0:
time.sleep(0.5)
mouse.click(Button.left)
num -= 1
with Listener(on_click=on_click) as listener:
listener.join()
非常感谢您的帮助。
答案 0 :(得分:1)
您需要使用pressed
变量。
似乎保留了按下按钮还是释放按钮的值。
否则,循环也将在释放时再次重复。
这对我来说是预期的:
import time
from pynput.mouse import Button, Controller, Listener
mouse = Controller()
def on_click(x, y, button, pressed):
if button == Button.right and pressed:
num = 3
while num > 0:
print("Clicked")
time.sleep(0.5)
mouse.click(Button.left)
num -= 1
print("Done")
with Listener(on_click=on_click) as listener:
listener.join()
答案 1 :(得分:1)
经过一段时间的调试和挖掘问题后,似乎pynput.mouse.Listener
在移动鼠标时在Windows计算机上挂起/滞后有一些问题。
在Linux机器上,开箱即用,一切正常,没有挂起或滞后。