我在python2.7中使用curses来控制机器人。我想用例如来引导它w
键,告诉它应该继续前进。这是我的代码,去掉了所有机器人控件:
import curses
from time import sleep
if __name__ == "__main__":
shell = curses.initscr()
shell.nodelay(True)
while True:
key = shell.getch()
if key == 119:
print("key w pressed")
sleep(0.03)
效果很好,只是我必须按 Enter 键才能识别该键。因此,我可以多次按 w
,当我按 Enter 时,机器人会完全执行其应该执行的操作,或者在本示例中,文本 key w Pressed
显示为我已经按了很多次了。但我希望这立即发生,即无需按 Enter 键。如何实现这一目标?
最佳答案
将 curses.cbreak()
添加到您的设置中,并在清理时调用 curses.nocbreak()
将终端恢复到可用状态。
您可以通过捕获 ctrl-c 作为异常来进行清理。例如:
try:
curses.cbreak()
while True:
key = shell.getch()
if key == 119:
print("key w pressed")
sleep(0.03)
except KeyboardInterrupt:
curses.nocbreak()
关于python - 使用curses立即检测用户输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32136907/