Я пытаюсь завершить простую программу автоматизации с графическим интерфейсом, которая просто открывает веб-страницу и затем нажимает на определенное место на странице каждые 0,2 секунды, пока я не скажу ей остановиться.Я хочу, чтобы мой код выполнялся и его цикл выполнялся бесконечно, пока указанная привязка клавиш не разорвет цикл (или всю программу).Я начал с классического KeyboardInterrupt, который позволяет CTRL + C выходить из программы.Вот что я думал, что мой окончательный код будет выглядеть так:
import webbrowser, pyautogui, time
webbrowser.open('https://example.com/')
print('Press Ctrl-C to quit.')
time.sleep(5)
#pyautogui.moveTo(1061, 881)
try:
while True:
time.sleep(0.2)
pyautogui.click(1061,881)
except KeyboardInterrupt:
print('\nDone.')
Все в коде работает, за исключением того, что я не могу выйти из него после запуска цикла щелчка.Прерывание клавиатуры и использование CTRL-C для выхода не работают вообще для этого сценария, по любой причине.
Я просто хочу иметь возможность нажать «escape» (или любую другую клавишу), чтобы выйти из цикла (или программы в целом) - просто любым способом заставить цикл выйти и остановиться.Прямо сейчас он работает до бесконечности, но я хочу, чтобы простой макрос связывания клавиш мог его остановить / сломать.
Я пытался использовать getch для связывания клавиши escape, чтобы вызвать разрыв, но безрезультатно:
import webbrowser, pyautogui, time, msvcrt
webbrowser.open('https://example.com')
print('Press Ctrl-C to quit.')
time.sleep(5)
#pyautogui.moveTo(1061, 881)
try:
while True:
time.sleep(0.2)
pyautogui.click(1061,881)
if msvcrt.kbhit():
key = ord(readch())
if key == 27:
break
Я удивлен, что это было так сложно сделать в Python.Я обнаружил много похожих проблем в Stackoverflow, но с неудовлетворительными ответами, и, к сожалению, ни с одной из них, которые не решили мою проблему.Я смог с легкостью делать такие вещи на более простых языках программирования, таких как AuotHotKeys.Я чувствую, что я танцую вокруг решения.Любая помощь будет чудесно оценена!Заранее спасибо.