小编典典

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

python

我正在开发的游戏目前需要让人们以自己的名字参加高分榜。我对如何处理按键有些陌生,但是我只在寻找特定按键。是否有一种简单的方法可以使按下任何键的字母而无需执行以下操作:

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'

尽管这行得通,但我觉得有一种更有效的解决方法。我只是无法弄清楚或找到任何指导。


阅读 215

收藏
2020-12-20

共1个答案

小编典典

基本上有两种方法:

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

就这么简单

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

使用的好处chr是,chr仅当event.key0的值介于255和255之间(包括0和255)时,该方法才有效。

如果按menuAlt GrTabLShiftpygame.key.name将愉快地返回menualt grtableft shift,而chr会崩溃,死机,回报的空白,和崩溃。


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

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

使用功能键时,它会为您提供字母/数字或空字符串,并且还会考虑修饰符,例如,如果您在按住Shift的同时按a,它将返回A而不仅仅是just a

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

2020-12-20