python使用ord()和getch()来获取unicode



我现在正在学习python,我试图获得键盘输入,而不需要用getch()ord()按下回车键来处理(至少对我来说(从getch()返回的胡言乱语。

在我的理解中,getch()返回一个字节流,而ord确实将该字节数据转换为unicode。如果我没有错的话,还有一些键,比如箭头键(这是我的意图,构建一个cmd"ui"来导航(,它们被分成不同的unicode值。

到目前为止,在尝试了自己并搜索了网络后,我想出了一个灵魂,由互联网上的一个人提供(信息只是为了不声称别人的代码是我的(

import msvcrt
while True:
key = ord(msvcrt.getch())
if key == 27: #ESC
break
elif key == 13: #Enter
print("select")
elif key == 224: #thing i do not understand
key = ord(msvcrt.getch()) #thing i do not understand
if key == 80: #Down arrow
print("moveDown")
elif key == 72: #Up arrow
print("moveUp")
elif key == 77: #Right arrow
print("moveRight")
elif key == 75: #Left arrow
print("moveLeft")

这很好,但我不明白的是,为什么有必要进行第二个变量赋值。在我的理解中,getch()应该立即返回值,所以我不明白第二个key = ord...语句从哪里获得数据来将其分配给键变量。

我希望你能解释一下。

来自msvcrt.getch:的文档

msvcrtgetch((

读取按键并将结果字符作为字节字符串返回。控制台没有任何响应。如果按键,此呼叫将被阻止尚未可用,但不会等待按下Enter键。如果按下的键是特殊功能键,则会返回'00'或CCD_ 9;下一个调用将返回密钥代码Control-C按键无法使用此函数读取。

因此,如果按下了特殊功能键(例如箭头键(,我们必须测试0xE0(224(,然后读取下一个值。

最新更新