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()