首页 > 解决方案 > 如何在期望用户输入()时检测“ESC”按键

问题描述

我尝试使用

if msvcrt.kbhit():
  key_stroke = msvcrt.getch()

  if key_stroke==chr(27).encode(): #b'\x1b'
    print ("Esc key pressed")
    sys.exit()`

之前和之后, data=input('Enter a value:')但未检测到Esc key_stroke

也就是说,虽然期望用户使用input()函数进行输入,但如果用户按下Esc键,我想做sys.exit()

标签: python-3.xwindows-10msvcrt

解决方案


尝试这个:

import sys
import msvcrt
def func():
    print ('Enter user input:')
    while True:
        if msvcrt.kbhit():
            key_stroke = msvcrt.getche()
            if key_stroke==chr(27).encode():
                print ("Esc key pressed")
                sys.exit()
            else:
                #print (str(key_stroke).split("'")[1],"key pressed")
                i=str(key_stroke).split("'")[1]+input()
                print ("User input:",i)
                            
func()

注意:我使用的是 getche 而不是 getch,它与 getch 类似,但会打印按下的键。


推荐阅读