我如何进行食物选择而不要求顾客按[enter]进行选择?

我在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"

有类似的东西肯定会很精彩

print menu
while lastKey = "":
    lastKey = check_for_recent_keystrokes()
if "1" in lastKey: #do stuff...
0
2019-05-03 23:47:11
资源 分享
答案: 4

IDLE中的因子msvcrt不足是因为IDLE没有访问运行msvcrt的集合。 而当您在cmd.exe中本机运行该程序时,它可以完美地运行。 对于您的程序影响Mac和Linux终端的相同因素。

然而,我认为你是否真的可能会利用这个特别是对于Windows,甚至更多的权力。

0
2019-05-07 17:28:34
资源

哇,这终生难受。 好的,下面是我最后的结果

#!C:\python25\python.exe
import msvcrt
print """Menu
1) Say Foo 
2) Say Bar"""
while 1:
    char = msvcrt.getch()
    if char == chr(27): #escape
        break
    if char == "1":
        print "foo"
        break
    if char == "2":
        print "Bar"
        break

它使用IDLE,python ...点......以python为特色。 一旦我在DOS(急诊室,CMD.exe)中尝试它,作为一个实际的程序,之后它运行惩罚。

没有人在IDLE中尝试它,除非你有方便的任务管理器。

我现在忽略了我如何应对食物选择,而不是超级即时接受。

0
2019-05-07 17:25:55
资源

在Windows上:

import msvcrt
answer=msvcrt.getch()
0
2019-05-07 17:21:03
资源

在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"

0
2019-05-07 17:18:54
资源