我正在用 python 编写一个输入脚本,我想检测输入时是否按下了 ESc 按钮。我尝试使用键盘检测器,但它不起作用。这是我所做的:
import msvcrt
# validating input
def enteringMessage(message):
while True:
try:
# Convert the input to an integer
message = int(message)
# Check if the value is within the range
assert 1 <= message <= 24
return message # Return the valid value
except ValueError:
# Handle non-numerical input
message = input('What day is it [1,24] ?\n')
except AssertionError:
# Handle out-of-range values
message = input('What day is it [1,24] ?\n')
aborted = False
while not aborted:
day = enteringMessage(input('What day is it [1,24] ?\n'))
if msvcrt.kbhit() and msvcrt.getch() == b'\x1b':
aborted = True
break
humorOftheDay = 'xxxxx' #I fixed this for simplification purpose
print("Joke of December ", day, ": ")
print(humorOftheDay)
我尝试使用 libary
msvcrt
来检测并修改 aborted
变量以停止输入循环,但是当我在终端中运行时,它不起作用。
用 Python 编写的代码,版本 3.9
你能帮我一下吗?预先感谢您。
如果您可以安装 pynput 库,一个简单的方法是使用处理程序监听
on_press
键盘事件,如果事件的键是 ESC,则终止进程:
import os
from pynput import keyboard
def on_press(key):
if key == keyboard.Key.esc:
os._exit(0)
keyboard.Listener(on_press=on_press).start()
while True:
print(f'You entered: {input("Enter something: ")}')