@AnnoyingWolf

Как создать Listener объект без with оператора?

Нужно создать Listener объект без withоператора,чтобы он выполняться вдоль основного потока (пока не будет возвращена функция обратного вызова False).Код:

from pynput import keyboard

def on_press(key):
    try:
        print('alphanumeric key {0} pressed'.format(
            key.char))
    except AttributeError:
        print('special key {0} pressed'.format(
            key))

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

# Collect events until released
with keyboard.Listener(
        on_press=on_press,
        on_release=on_release) as listener:
    listener.join()
  • Вопрос задан
  • 206 просмотров
Решения вопроса 1
sanya84
@sanya84
Фанатик Python 3
from threading import Thread
import time
from pynput import keyboard


def on_press(key):
    try:
        print('alphanumeric key {0} pressed'.format(
            key.char))
    except AttributeError:
        print('special key {0} pressed'.format(
            key))

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

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

def main():
    for i in range(10):
        time.sleep(1)
        print(i)

if __name__ == '__main__':
    th = Thread(target=listener)
    th.start()
    main()
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы