Pygame如何获取按键的字符串表示形式

3

我希望根据用户按下的键来更改控件屏幕上的文本。如何将pygame.event.get()转换为显示已按下哪个键的字符串?

最好不要使用太多if语句。

for event in pygame.event.get():
    if event.type == pygame.KEYDOWN:
        slectedKey = # get key name as a string
        print(slectedKey)

print(pygame.key.name(event.key)) - undefined
1个回答

5

按下的键的代码可以通过event.key属性获得。 键的unicode表示可以通过event.unicode属性获得。 请参见pygame.event模块。

一个键的用户友好名称可以通过pygame.key.name()获得:

for event in pygame.event.get():
    if event.type == pygame.KEYDOWN:

        print(pygame.key.name(event.key))

请注意,如果您想判断某个键是否被按下,请将 event.keypygame.key 模块中定义的常量进行比较:
for event in pygame.event.get():
    if event.type == pygame.KEYDOWN:
        if event.key == pygame.K_LEFT:
            # [...]
        elif event.key == pygame.K_RIGHT:
            # [...]

将密钥存储在变量中,并在应用程序循环中持续使用:
for event in pygame.event.get():
    if event.type == pygame.KEYDOWN:
        slectedKey = event.key

if slectedKey == pygame.K_UP:
    # [...]
elif slectedKey == pygame.K_DOWN:
    # [...]

如果你想判断一个键是否被按住,则使用 pygame.key.get_pressed() 方法:
for event in pygame.event.get():
    if event.type == pygame.QUIT:
        run = False

keys = pygame.key.get_pressed()
if keys[pygame.K_SPACE]:
    # [...]
elif keys[pygame.K_a]:
    # [...]

1
keydown事件还有一个unicode属性,可以直接使用。 对于特殊键,也会触发该事件,而.key属性在这种情况下是不正确的(例如上箭头键的代码为"273")。 - undefined
是的,我想我可以为那些没有可表示符号的键做这个处理:else: slectedKey = event.unicode - undefined
@Rabbid76 但是我仍然希望不必使用太多的elif语句。 - undefined
@Avenger_aawin,关于你发布的链接:阅读代码并搜索sys,他们是用sys做什么的?你需要这样做吗?通过一点研究,你可以很快回答自己的问题。 - undefined
1
请参阅https://www.pygame.org/docs/ref/key.html#pygame.key.name:“从键盘按钮ID常量获取按钮的描述性名称。” - undefined
显示剩余5条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接