web-dev-qa-db-fra.com

Comment accepter la pression de touche en ligne de commande python?

Duplicata possible:
Python a lu un seul caractère à l'utilisateur

Je cherche à pouvoir contrôler un robot avec les touches fléchées en utilisant python. Et mon idée était d'implémenter du code qui ressemblait à quelque chose comme ça ...

#!/usr/bin/env python
# control a robot using python
exit = 0
while exit == 0:
  keypress = ##get keypress, if no key is pressed, continue##
  if keypress == 'q':
    exit = 1
    break
  Elif keypress == KEY_UP:
    ##robot move forward##
  Elif keypress == KEY_DOWN:
    ##robot move backward##
print "DONE"

Cependant, le problème est que je ne sais pas comment obtenir l'entrée des utilisateurs. Et je ne peux pas utiliser une solution basée sur l'interface graphique comme pygame à partir de ce que j'ai trouvé parce que le robot n'utilise pas d'affichage.

Toute aide est fortement appréciée!!

19
Elmer

Un simple exemple de malédictions. Voir la documentation du module curses pour plus de détails.

import curses
stdscr = curses.initscr()
curses.cbreak()
stdscr.keypad(1)

stdscr.addstr(0,10,"Hit 'q' to quit")
stdscr.refresh()

key = ''
while key != ord('q'):
    key = stdscr.getch()
    stdscr.addch(20,25,key)
    stdscr.refresh()
    if key == curses.KEY_UP: 
        stdscr.addstr(2, 20, "Up")
    Elif key == curses.KEY_DOWN: 
        stdscr.addstr(3, 20, "Down")

curses.endwin()
33
dwblas