Исправить повторение нажатия клавиш Python - PullRequest
0 голосов
/ 30 января 2020

У меня есть скрипт, который ожидает нажатия клавиш и регистрирует их в консоли:

from pynput.keyboard import Key, Listener

def on_press(key):
    print('{0} pressed'.format(
        key))

def on_release(key):
    print('{0} release'.format(
        key))
    if key == Key.esc:
        # Stop listener
        return False

# Collect events until released
with Listener(
        on_press=on_press,
        on_release=on_release) as listener:
    listener.join()

Сама система работает, однако, когда клавиша удерживается нажатой, она выдает следующий результат:

Key.space pressed
Key.space pressed
Key.space pressed
Key.space pressed
Key.space pressed
Key.space pressed
Key.space pressed
Key.space pressed
Key.space pressed

Как заставить нить приостановиться, пока ключ не будет отпущен?

1 Ответ

0 голосов
/ 30 января 2020

Этот код должен вам помочь

from pynput.keyboard import Key, Listener
is_released=False
def on_press(key):
    global is_released
    if is_released:
        print('{0} pressed'.format(key))
        is_released=False

def on_release(key):
    global is_released
    print('{0} release'.format( key))
    is_released=True
    if key == Key.esc:
        # Stop listener
        return False

# Collect events until released
with Listener(
        on_press=on_press,
        on_release=on_release) as listener:
    listener.join()
...