Pynput - перезапустить прослушиватель (или запустить новый)? - PullRequest
1 голос
/ 18 февраля 2020


Я использую модуль pynput и хочу перезапустить прослушиватель после выполнения определенной c комбинации правила - условия - ключа.
Код, который я написал, показан ниже:

from pynput.keyboard import Key, Listener
from langdetect import detect
from pynput import keyboard

def listener_manager():
    #the idea is to return a new listener when needed
    listener = keyboard.Listener(on_press=on_press)
    return listener

def on_press(key):
    global string
    global listener
    global controller

    if key == keyboard.Key.esc: #if button escape is pressed close the program
        listener.stop()
    elif key == keyboard.Key.space:
        print(string)
        string=""
    elif key == keyboard.Key.shift:
        listener.stop()
        controller = keyboard.Controller()
        listener = listener_manager()
        listener.start()
        print("New listener started")
    elif key== keyboard.Key.alt_l:
        listener.stop()
        controller = keyboard.Controller()
        listener = listener_manager()
        listener.start()
        print("Left alt pressed")
    else:
        string = ''.join([string,str(key).replace("'","")])


string=""

"""This is the beginning"""
controller = keyboard.Controller()
# Collect events until released

listener = keyboard.Listener(on_press=on_press)
listener.start()

В основном я хочу перезапустить слушатель, когда shift или alt (ИЛИ, когда язык меняется), но код, который я написал, на самом деле не работал.
Любая помощь или совет были бы хорошими.
Спасибо заранее!

...