Python Pynput - программа отстает при запуске - PullRequest
0 голосов
/ 17 февраля 2019

Итак, я пытался создать простую программу, которая, щелкнув правой кнопкой мыши, заставит мою мышь щелкнуть левой кнопкой мыши 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 ]

0 голосов
/ 17 февраля 2019

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

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

0 голосов
/ 17 февраля 2019

Вам необходимо использовать переменную 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()
...