我在Python中有一个关键侦听器,可以从列表中选择一些选项。选择效果很好。但是,无论我按什么键,都将输入下一个终端输入。例如,这是我的代码
import os
from pynput.keyboard import Key, Listener
cls = lambda:os.system("cls")
def on_press(key):
"""Listen for keywords like UP, DOWN and ENTER"""
global KEY
if key == Key.up:
KEY = 'up'
return False
elif key == Key.down:
KEY = 'down'
return False
elif key == Key.enter:
KEY = 'enter'
return False
elif str(key) == "'\\x03'" or key == Key.esc:
KEY = 'esc'
return False
return True
def OptionSelector(option: list) -> int:
current = 0
while True:
output = ''
cls()
for text in option:
index = option.index(text)
output += '(*)' if current == index else '( )'
output += f' {text}\n'
print(output)
with Listener(on_press=on_press) as OptionListener:
OptionListener.join()
global KEY
if KEY == 'up':
if current > 0:
current -= 1
elif KEY == 'down':
if current != (len(option) - 1):
current += 1
elif KEY == 'enter':
OptionListener.stop()
cls()
return current
elif KEY == 'esc':
exit()
print(OptionSelector(['a', 'b', 'c', 'd', 'e']))
当我按下“ abcdefg”时,在python代码中看到的内容没有任何变化。但是,当我按下“ Key.enter”时,代码将很好地执行,然后在终端上的新行将显示我尝试在终端上执行abcdefg
D:\codes\Python\data>abcdefg
'abcdefg' is not recognized as an internal or external command,
operable program or batch file.
D:\codes\Python\data>
如何阻止按键监听泄漏到下一个终端线路?