Comment créer un menu qui n'oblige pas l'utilisateur à appuyer sur [enter] pour effectuer une sélection ?

J'ai un menu en Python. Cette partie était facile. J'utilise raw_input() pour obtenir la sélection de l'utilisateur.

Le problème est que raw_input (et l'entrée) obligent l'utilisateur à appuyer sur Entrée après avoir effectué une sélection. Existe-t-il un moyen de faire agir le programme immédiatement après une frappe ? Voici ce que j'ai jusqu'à présent :

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'

Ce serait formidable d'avoir quelque chose comme

print menu
while lastKey = '':
    lastKey = check_for_recent_keystrokes()
if '1' in lastKey: #do stuff...
请先 登录 后评论

2 réponses

Mark Harrison

Sous Windows :

import msvcrt
answer=msvcrt.getch()
请先 登录 后评论
helloandre

La raison pour laquelle msvcrt échoue dans IDLE est que IDLE n'accède pas à la bibliothèque qui exécute msvcrt. Alors que lorsque vous exécutez le programme en mode natif dans cmd.exe, cela fonctionne bien. Pour la même raison que votre programme explose sur les terminaux Mac et Linux.

Mais je suppose que si vous allez l'utiliser spécifiquement pour Windows, plus de puissance pour vous.

请先 登录 后评论