Как биндить функцию на кнопку клавиатуры в 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("Программа идет дальше... )') # отработает сразу при запуске программы
Таким образом перехват нажатий клавиатуры обернутый в поток не блокирует работу основной программы.