首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用python msvcrt识别按键

使用python msvcrt识别按键
EN

Stack Overflow用户
提问于 2017-08-16 19:58:54
回答 2查看 3.4K关注 0票数 0

我想使用python中的msvcrt模块,但是我不能让它工作。

我用的是windows10,有几个“活动键盘”(我可以把它从azerty换成qwerty之类的),除了Python3本身,我什么都没做/下载(我这么说是因为可能有一些我不知道的要求或操作)。

我想做的很简单--按一个键,然后根据按下的键做一些事情(所以我需要我的计算机来识别那个键)。

我使用以下代码进行了尝试:

代码语言:javascript
复制
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“键。

提前感谢!

EN

回答 2

Stack Overflow用户

发布于 2017-08-16 20:11:24

您应该在所希望的键之前加上b,即:

代码语言:javascript
复制
char = char = msvcrt.getch()
if char == b"\r":
    print("yay")
else:
    print("nope")

Python 3.3 documentation声明:

字节量总是以'b‘或’B‘为前缀;它们会生成一个字节类型的实例,而不是

类型。它们只能包含ASCII字符;数值为128或更大的字节必须用转义表示。

您可以通过在按下愿望键后查看msvcrt.getch()的输出,轻松地自己检查它。

代码语言:javascript
复制
>>> msvcrt.getch() # I pressed Enter
b'\r'
>>> msvcrt.getch() # I pressed SPACE
b' '
>>> msvcrt.getch() # I pressed BACKSPACE
b'\x08'
票数 0
EN

Stack Overflow用户

发布于 2018-08-08 11:14:40

这应该适用于Windows 10上的Python 3:

代码语言:javascript
复制
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)}')
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45712963

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档