Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Pygame:有什么简单的方法可以找到任何字母数字的字母/数字吗?_Python_Pygame_Keypress - Fatal编程技术网

Python Pygame:有什么简单的方法可以找到任何字母数字的字母/数字吗?

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

我目前正在开发的游戏需要让人们以自己的名义为highscore board腾出时间。我稍微熟悉如何处理按键,但我只处理过寻找特定的按键。有没有一种简单的方法可以在不必执行以下操作的情况下获得任何按键的字母:

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)