Pygame:有没有简单的方法可以找到任何按字母数字的字母/数字?

Jer*_*emy 4 python pygame keypress

我正在努力的游戏目前需要让人们以他们的名义为高分榜做准备.我对如何处理按键有点熟悉,但我只是在寻找特定的按键.是否有一种简单的方法来获取任何键的字母而不必执行以下操作:

for event in pygame.event.get(): 
    if event.type == KEYUP: 
        if event.key == K_a:
           newLetter = 'a'
        elif event.key == K_b:
           newLetter = 'b'

           ...
       elif event.key == K_z:
           newLetter = 'z'
Run Code Online (Sandbox Code Playgroud)

虽然这样可行,但我觉得有一种更有效的方法.我只是无法弄明白或找到任何指南.

slo*_*oth 9

基本上有两种方式:

选项1:使用pygame.key.name().

这很简单

for event in pygame.event.get():
  if event.type == pygame.KEYDOWN:
    print(pygame.key.name(event.key))
Run Code Online (Sandbox Code Playgroud)

优于使用的优点chrchr仅当值event.key介于0和255(含)之间时才有效.

如果按menu,Alt Gr,TabLShift,pygame.key.name将愉快地返回menu,alt gr,tableft shift,而chr会崩溃,死机,返回空格,和崩溃.


选项2:使用事件的unicode属性pygame.KEYDOWN

for event in pygame.event.get():
  if event.type == pygame.KEYDOWN:
    print(event.unicode)
Run Code Online (Sandbox Code Playgroud)

当使用功能键时它会给你字母/数字或空字符串,它也会考虑修饰符,例如,如果按住Shift键,它将返回A而不是仅仅a.

pygame.KEYDOWN事件具有其他属性unicode和scancode.unicode表示单个字符串,它是输入的完全翻译字符.这考虑了移位和组合键.scancode表示特定于平台的密钥代码.