Possible Duplicate:
Python read a single character from the user
I am looking to be able to control a robot with the arrow keys using python. And my idea was to implement code that looked something like this...
#!/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"
However the problem is that I do not know how to get the users input. And I cannot use a GUI based solution like pygame from what I have found because the robot does not use a display.
Any help is very much appreciated!!
To detect keypress, we will use the is_pressed() function defined in the keyboard module. The is_pressed() takes a character as input and returns True if the key with the same character is pressed on the keyboard.
In Python 2 use raw_input(): raw_input("Press Enter to continue...") This only waits for the user to press enter though. This should wait for a keypress.
A simple curses example. See the docs for the curses module for details.
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()
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With