python - vettori - flowgorithm web




Come posso creare un menu che non richiede all'utente di premere[invio] per effettuare una selezione? (3)

Ho un menu in Python. Quella parte è stata facile. Sto usando raw_input() per ottenere la selezione dall'utente.

Il problema è che raw_input (e input) richiedono all'utente di premere Invio dopo aver effettuato una selezione. C'è un modo per far sì che il programma agisca immediatamente dopo un tasto? Ecco cosa ho ottenuto finora:

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"

Sarebbe bello avere qualcosa di simile

print menu
while lastKey = "":
    lastKey = check_for_recent_keystrokes()
if "1" in lastKey: #do stuff...

La ragione per cui msvcrt ha esito negativo in IDLE è perché IDLE non sta accedendo alla libreria che esegue msvcrt. Considerando che quando si esegue il programma in modo nativo in cmd.exe funziona bene. Per la stessa ragione per cui il tuo programma esplode sui terminali Mac e Linux.

Ma suppongo che se stai usando questo in particolare per Windows, più potere a te.


Wow, ci sono voluti per sempre. Ok, ecco cosa mi sono ritrovato

#!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

Fallisce duramente con IDLE, il Python ... cosa ... che viene fornito con Python. Ma una volta provato in DOS (er, CMD.exe), come un vero programma, funzionava bene.

Nessuno lo prova in IDLE, a meno che non abbiate a portata di mano il Task Manager.

Ho già dimenticato come ho vissuto con menu che non rispondono in modo super-istantaneo.


Su Windows:

import msvcrt
answer=msvcrt.getch()




python