2

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

任何帮助是极大的赞赏。

4

2 回答 2

2

pynput.mouse.Listener经过一段时间的调试和挖掘问题,移动鼠标时似乎在 Windows 机器上挂起/滞后一些问题。

在 Linux 机器上,一切都应该开箱即用,没有挂起或滞后。

于 2019-02-17T12:11:52.493 回答
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()
于 2019-02-16T22:32:56.763 回答