Python Pygame:有什么简单的方法可以找到任何字母数字的字母/数字吗?
我目前正在开发的游戏需要让人们以自己的名义为highscore board腾出时间。我稍微熟悉如何处理按键,但我只处理过寻找特定的按键。有没有一种简单的方法可以在不必执行以下操作的情况下获得任何按键的字母:Python Pygame:有什么简单的方法可以找到任何字母数字的字母/数字吗?,python,pygame,keypress,Python,Pygame,Keypress,我目前正在开发的游戏需要让人们以自己的名义为highscore board腾出时间。我稍微熟悉如何处理按键,但我只处理过寻找特定的按键。有没有一种简单的方法可以在不必执行以下操作的情况下获得任何按键的字母: for event in pygame.event.get(): if event.type == KEYUP: if event.key == K_a: newLetter = 'a' elif event.key == K
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'
虽然这会起作用,但我觉得有一种更有效的方法。我就是想不出来,也找不到任何指南。如果你看K_a只是97,这是“a”的ascii码,我会推断K_a是什么?是问号表示的任何内容的ascii码
if event.type == KEYUP:
print chr(event.key) #convert ascii code to a character
也许吧
如前所述,这将不适用于255以上的ascii(不再是真正的ascii)
您可以使用下面概述的方法,或者只使用
unichr(event.key)
而不是chr
基本上有两种方法:
选项1:使用
这很简单
for event in pygame.event.get():
if event.type == pygame.KEYDOWN:
print(pygame.key.name(event.key))
使用chr
的优势在于chr
仅在event.key
的值介于0和255(包括0和255)之间时有效
如果按menu、Alt Gr、Tab或LShift,pygame.key.name
将愉快地返回menu
、Alt Gr
、Tab
和left shift
,而chr
将崩溃、崩溃、返回空白和崩溃
选项2:使用事件的
unicode
属性
当使用功能键时,它将获得字母/数字或空字符串,并且还将考虑修饰符,例如,如果在按下a时按住Shift键,它将返回a
,而不仅仅是a
pygame.KEYDOWN事件具有其他属性unicode和unicode
扫描码。unicode表示单个字符串,该字符串是
输入完全翻译的字符。这考虑到了这种转变
和合成键。扫描代码表示平台特定的密钥
代码
我建议不要使用
chr
,因为如果event.key`的值大于255,它将崩溃;特别是如果有一个库函数可以很好地处理这种情况。。。使用unichr也应该解决这个问题
for event in pygame.event.get():
if event.type == pygame.KEYDOWN:
print(event.unicode)