如何在命令行python中接受keypress?

Elm*_*mer 20 python keyboard keypress

可能重复:
Python从用户读取单个字符

我希望能够使用python使用箭头键控制机器人.我的想法是实现看起来像这样的代码......

#!/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"
Run Code Online (Sandbox Code Playgroud)

但问题是我不知道如何获得用户输入.我不能使用基于GUI的解决方案,比如我发现的pygame,因为机器人不使用显示器.

很感谢任何形式的帮助!!

小智 35

一个简单的诅咒示例.有关详细信息,请参阅curses模块的文档.

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()
Run Code Online (Sandbox Code Playgroud)

  • allyourcode - 添加`curses.noecho()`(在调用`cbreak`之后很好).然后curses不会自动打印密钥,只有脚本会. (3认同)