Как биндить функцию на кнопку клавиатуры в Python?

Написал бота с помощью библиотеки pyautogui. Нужно, чтобы при нажатии кнопки (допустим 'enter') бот циклично проигрывался, а при повторном нажатии либо принудительно останавливался, либо программа закрывалась.

Долго искал информацию на это тему так и не нашел. Может кто-то знает решения?

Пример бота:

import pyautogui as root
from time import sleep
    
sleep (3)
root.moveTo( 242, 177 )
root.doubleClick()
sleep (17)
root.moveTo( 1709, 177 )  
root.click()

Ответы (1 шт):

Автор решения: Kers

Как и советовали в комментариях используйте keyboard


import keyboard

def on_triggered():
    print("Ваша функция!!!")

keyboard.add_hotkey('ctrl+shift', on_triggered)


print("Нажмите ESC для остановки")
keyboard.wait('esc')
print("Программа идет дальше... )') # отработает после нажатия esc

Или тоже самое но с потоками:

def on_triggered():
    print("Ваша функция!!!")

def key_watcher():
    keyboard.add_hotkey('ctrl+shift', on_triggered)
    keyboard.wait('esc')

thread_ = threading.Thread(target=key_watcher)
thread_.start()
print("Программа идет дальше... )') # отработает сразу при запуске программы

Таким образом перехват нажатий клавиатуры обернутый в поток не блокирует работу основной программы.

→ Ссылка