【发布时间】:2012-08-23 22:43:44
【问题描述】:
我是 Python 新手,我刚刚用 Python 制作了一个游戏和一个菜单。 问题是,使用 (raw_)input() 需要我在每次按键后按回车键,我想这样做,以便按下向下箭头将立即选择下一个菜单项,或在游戏中向下移动。目前,它要求我喜欢输入“向下”,然后按 Enter。我也做了很多研究,但我不希望仅仅为了实现一个 keyDown() 方法而下载巨大的模块(例如 pygame)。那么有没有更简单的方法,我只是找不到?
编辑:
刚刚发现msvcrt.getch() 可以解决问题。这不是 keyDown(),但它有效。但是,我也不知道如何使用它,看起来很奇怪,这里有什么帮助吗?这是我目前得到的:
from msvcrt import getch
while True:
key = getch()
print(key)
但是,它总是给我所有这些无意义的字节,例如,向下箭头是这样的:
b'\xe0'
b'P'
而且我不知道如何使用它们,我尝试与 chr() 进行比较,甚至使用 ord() 但实际上无法进行任何比较。我要做的基本上是这样的:
from msvcrt import getch
while True:
key = getch()
if key == escape:
break
elif key == downarrow:
movedown()
elif key == 'a':
...
等等……有什么帮助吗?
【问题讨论】:
-
不是那个副本。这是关于 keydown 事件,而不是单个字符输入。
-
我可以跨平台解决方案??
msvcrt在 Python 的 mac/linux 发行版上不可用
标签: python windows key keydown getch