我想使用python中的msvcrt模块,但是我不能让它工作。
我用的是windows10,有几个“活动键盘”(我可以把它从azerty换成qwerty之类的),除了Python3本身,我什么都没做/下载(我这么说是因为可能有一些我不知道的要求或操作)。
我想做的很简单--按一个键,然后根据按下的键做一些事情(所以我需要我的计算机来识别那个键)。
我使用以下代码进行了尝试:
import msvcrt
while 1: #is that necessary?
char = msvcrt.getch()
if char == ??? #that's what I'm struggling with
print("yay")
else:
print("nope") 我只是不知道如何“调用”我的钥匙。我尝试过例如'\r'、char(13)、ASCII码等等,但这些都不起作用。很有可能,他们应该这样做,但我做错了--我的意思是,我永远不会得到"yay",尽管按下了"right“键。
提前感谢!
发布于 2017-08-16 20:11:24
您应该在所希望的键之前加上b,即:
char = char = msvcrt.getch()
if char == b"\r":
print("yay")
else:
print("nope")字节量总是以'b‘或’B‘为前缀;它们会生成一个字节类型的实例,而不是
类型。它们只能包含ASCII字符;数值为128或更大的字节必须用转义表示。
您可以通过在按下愿望键后查看msvcrt.getch()的输出,轻松地自己检查它。
>>> msvcrt.getch() # I pressed Enter
b'\r'
>>> msvcrt.getch() # I pressed SPACE
b' '
>>> msvcrt.getch() # I pressed BACKSPACE
b'\x08'发布于 2018-08-08 11:14:40
这应该适用于Windows 10上的Python 3:
import msvcrt
import os
os.system('cls')
while True:
print('Press key [combination] (Kill console to quit): ', end='', flush=True)
key = msvcrt.getwch()
num = ord(key)
if num in (0, 224):
ext = msvcrt.getwch()
print(f'prefix: {num} - key: {ext!r} - unicode: {ord(ext)}')
else:
print(f'key: {key!r} - unicode: {ord(key)}')https://stackoverflow.com/questions/45712963
复制相似问题