сбой pyautogui при нажатии клавиши CTRL

#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 в терминале.