#python #pyautogui #keyboardinterrupt
Вопрос:
Когда мой код выполняет CTRL C, он аварийно завершает работу. Это касается обоих:
pyautogui.hotkey('ctrl', 'c')
и
pyautogui.keyDown('ctrl')
pyautogui.press('c')
pyautogui.keyUp('ctrl')
У меня есть следующий пример кода:
import pyautogui
# failsafe in case of robot madness
pyautogui.PAUSE = .2
pyautogui.FAILSAFE = True
# copy selection
# pyautogui.hotkey('ctrl', 'c')
pyautogui.keyDown('ctrl')
pyautogui.press('c')
pyautogui.keyUp('ctrl')
# Move mouse to X
pyautogui.moveTo(1400, 360, .1)
# click
pyautogui.click()
# select all
pyautogui.hotkey('ctrl', 'a')
# paste
pyautogui.hotkey('ctrl', 'v')
# enter
pyautogui.hotkey('enter')
# Move mouse to locatoin
pyautogui.moveTo(660, 470, .5)
# middle click this thing to open new tab
pyautogui.click(button='middle')
# Move mouse to right window again
pyautogui.moveTo(2500, 500, .1)
а вот ретроспектива с линией pyautogui.hotkey('ctrl', 'c')
в действии:
Traceback (most recent call last):
File "madmimi-email-to-search.py", line 8, in <module>
pyautogui.hotkey('ctrl', 'c')
File "/home/username/.local/lib/python3.8/site-packages/pyautogui/__init__.py", line 587, in wrapper
_handlePause(kwargs.get("_pause", True))
File "/home/username/.local/lib/python3.8/site-packages/pyautogui/__init__.py", line 631, in _handlePause
time.sleep(PAUSE)
KeyboardInterrupt
и вот обратная запись с другими 3 строками, выполняющими CTRL C в действии и pyautogui.hotkey('ctrl', 'c')
закомментированными:
Traceback (most recent call last):
File "madmimi-email-to-search.py", line 10, in <module>
pyautogui.press('c')
File "/home/username/.local/lib/python3.8/site-packages/pyautogui/__init__.py", line 587, in wrapper
_handlePause(kwargs.get("_pause", True))
File "/home/username/.local/lib/python3.8/site-packages/pyautogui/__init__.py", line 631, in _handlePause
time.sleep(PAUSE)
KeyboardInterrupt
Я отмечаю, что во втором примере клавиша CTRL заблокирована после сбоя сценария, и мне нужно снова нажать на клавиатуру, чтобы отключить ее.
Этот код работал на моей старой машине, но после полного переформатирования и переустановки всего он теперь сломан.
Pop!_OS 20.04 LTS X11 Gnome 3.36.8
Спасибо
Комментарии:
1. Он не разбился. Это больше похоже на то, что графический интерфейс передал Ctrl C терминалу. Поскольку
KeyboardInterrupt
означает, что вы закрываете программу, нажав Ctrl C в терминале.