如何在python中输入时检测esc

问题描述 投票:0回答:1

我正在用 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

你能帮我一下吗?预先感谢您。

python python-3.x input keyboard-events
1个回答
0
投票

如果您可以安装 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: ")}')
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.