如何制作一个不需要用户按[回车]进行选择的菜单?

Gra*_*ant 24 python

我有一个Python菜单.那部分很简单.我正在raw_input()用来从用户那里获得选择.

问题是raw_input(和输入)要求用户Enter在做出选择后按下.有没有办法让程序在击键时立即采取行动?这是我到目前为止所得到的:

import sys
print """Menu
1) Say Foo
2) Say Bar"""
answer = raw_input("Make a selection> ")

if "1" in answer: print "foo"
elif "2" in answer: print "bar"
Run Code Online (Sandbox Code Playgroud)

有类似的东西会很棒

print menu
while lastKey = "":
    lastKey = check_for_recent_keystrokes()
if "1" in lastKey: #do stuff...
Run Code Online (Sandbox Code Playgroud)

Mar*_*son 9

在Linux上:

  • 设置原始模式
  • 选择并阅读击键
  • 恢复正常设置
import sys
import select
import termios
import tty

def getkey():
    old_settings = termios.tcgetattr(sys.stdin)
    tty.setraw(sys.stdin.fileno())
    select.select([sys.stdin], [], [], 0)
    answer = sys.stdin.read(1)
    termios.tcsetattr(sys.stdin, termios.TCSADRAIN, old_settings)
    return answer

print """Menu
1) Say Foo
2) Say Bar"""

answer=getkey()

if "1" in answer: print "foo"
elif "2" in answer: print "bar"


Mar*_*son 9

在Windows上:

import msvcrt
answer=msvcrt.getch()
Run Code Online (Sandbox Code Playgroud)