Pynput срабатывает дважды, когда используется в потоке (Python) - PullRequest
0 голосов
/ 27 февраля 2019

Я использую pynput в моем недавнем проекте.Я реализовал это следующим образом:

from pynput import keyboard
def on_press(key):
    keyChar = ''
    try:
        keyChar = format(key.char)
    except AttributeError:
        ...
    except:
        ...

    if keyChar == 'i':
        print ("i is pressed")
    if keyChar == 'o':
        print ("o is pressed")

def on_release(key):
    if key == keyboard.Key.page_down:
        # Stop listener
        os._exit(1)
        return False

def startKeyListener():
    with keyboard.Listener(on_press=on_press, on_release=on_release) as listener:
        listener.join()

thread = Thread(target=startKeyListener, args=())
thread.start()

if __name__ == '__main__':
    ...

Моя проблема в том, что когда я нажимаю «i» или «o», строка печати вызывается дважды.Итак, мой вывод (когда я нажимаю «i»):

i is pressed
i is pressed

Как я могу это исправить, чтобы он срабатывал только один раз.

...