我正在使用pynput模块,并且要在满足特定规则-条件-组合键之后重新启动侦听器。
我编写的代码如下所示:
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(语言更改时为OR)时重新启动侦听器,但是我编写的代码并没有真正起作用。
任何帮助或建议都很好。
预先感谢!
答案 0 :(得分:0)
这样的事情还不够:
listener.stop()
listener.start()
我在自己的程序中发现这是有效的:
listener = keyboard.Listener(on_press=on_press)
不使用 join
可以使用上述代码。