Python Pynput - программа отстает при запуске

Поэтому я пытался создать простую программу, которая, щелкнув правой кнопкой мыши, заставит мою мышь щелкнуть левой кнопкой мыши 3 раза с интервалом в 0,5 секунды. Однако, когда я запускаю программу и делаю правый клик, программа делает то, что ей говорят, но также начинает ужасно отставать примерно на 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 ответа

Решение

После некоторого времени отладки и копания проблем, кажется, pynput.mouse.Listener имеет несколько проблем с зависанием / отставанием на компьютерах с Windows при перемещении мыши.

На компьютере с Linux все должно работать без каких-либо зависаний.

Вы должны использовать 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()
Другие вопросы по тегам