как выйти из цикла отслеживания клавиш?
как выйти из цикла отслеживания клавиш и вывести последнюю нажатую?
import sqlite3
import keyboard
a = ''
def print_pressed_keys(e):
global a
a = e.name
with sqlite3.connect('database.db') as db:
cursor = db.cursor()
cursor.execute('''CREATE TABLE IF NOT EXISTS hotkey (key1 TEXT)''')
query = """ UPDATE hotkey SET key1 = ? """
cursor.execute(query, (a,))
db.commit()
keyboard.hook(print_pressed_keys)
keyboard.wait()
print(a)
мне не нужно осуществлять выход по горячей клавише
Ответы (1 шт):
Автор решения: eri
→ Ссылка
keyboard.wait() делает простой while True: time.sleep(1e10)
напишите свой цикл ожидания вместо этого.
import sqlite3
import keyboard
import threading
a = ''
def print_pressed_keys(event):
def handler(e):
global a
a = e.name
with sqlite3.connect('database.db') as db:
cursor = db.cursor()
cursor.execute('''CREATE TABLE IF NOT EXISTS hotkey (key1 TEXT)''')
query = """ UPDATE hotkey SET key1 = ? """
cursor.execute(query, (a,))
db.commit()
if e.name == 'q': # условие выхода
event.set()
return handler
waitlock = threading.Event()
keyboard.hook(print_pressed_keys(waitlock))
waitlock.wait()
но если Вы ждете одного нажатия, то лучше используйте keyboard.read_event() вместо хука.