Используйте pynput для выхода из бесконечного цикла - PullRequest
1 голос
/ 29 января 2020

Я пытаюсь использовать pynput для закрытия из бесконечного l oop. Прямо сейчас, когда код запускается и после нажатия Shift и F2 он будет печатать «работает» бесконечно. Я хочу, чтобы l oop прекратил печать, как только я нажму клавишу es c. Вот мой код

from pynput.keyboard import Key, Controller
from pynput import keyboard
import time

typer = Controller()


COMBINATIONS = [
    {keyboard.Key.shift, keyboard.Key.f2}
]


current = set()


def execute():
    while current != keyboard.Key.esc:
        print("running")

def on_press(key):
    if any([key in COMBO for COMBO in COMBINATIONS]):
        current.add(key)
        if any(all(k in current for k in COMBO) for COMBO in COMBINATIONS):
            execute()
    if key == keyboard.Key.esc:
        sys.exit
        return False


def on_release(key):
    if any([key in COMBO for COMBO in COMBINATIONS]):
        current.remove(key)


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

Часть этого кода может быть посторонней, так как я все еще изучаю pynput и собираю его из программы, которую я написал вчера. Я попытался вернуть false и использовать sys.exit в функции on_press и изменить бесконечный l oop, чтобы он работал только тогда, когда текущий ключ не является es c.

...