Python Pynput-程序在启动时滞后

时间:2019-02-16 21:59:17

标签: python-3.x pynput

因此,我一直在尝试制作一个简单的程序,在单击鼠标右键时,使鼠标以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()

非常感谢您的帮助。

2 个答案:

答案 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机器上,开箱即用,一切正常,没有挂起或滞后。