@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()
  • Вопрос задан
  • 51 просмотр
Решения вопроса 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()
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
от 75 000 до 90 000 руб.
от 100 000 до 150 000 руб.
Хантфлоу Москва
от 60 000 до 80 000 руб.
18 нояб. 2019, в 02:11
900 руб./в час
17 нояб. 2019, в 23:36
1500 руб./за проект
17 нояб. 2019, в 23:04
5000 руб./за проект