在Python / Pygame中获取键盘输入的好方法是什么?

时间:2013-01-08 21:40:42

标签: python input pygame

我正在创建一个pygame程序,其中我有一个字符串,无论用户输入什么类型,它都会在pygame窗口中显示它。这是代码:

    if (event.type==pygame.KEYDOWN):
                    if (event.key==pygame.K_BACKSPACE):
                            if (len(sin)>0):
                                    sin=""
                    elif (event.key==pygame.K_RETURN):
                            if (len(sin)==11):
                                    #sin.replace("-","")
                                    running=2
                                    screen.fill(white)
                            else:
                                    body=True

                    else:
                            sin=sin+chr(event.key)
    text=font.render(sin,True,(black),white) 

一个问题是它无法识别特殊字符,如(“:”,“;”,移位字符等)。是否有更好的方法来编写这样的代码?

1 个答案:

答案 0 :(得分:2)

使用event.unicodeget what you are looking for

  

... pygame.KEYDOWN事件有一个额外的属性unicode,和   扫描码。 unicode表示单个字符串   完全翻译的字符输入。 ...


要回答您的评论,您只需检查event.unicode而不是event.key

...
if (event.type==pygame.KEYDOWN):
    if (event.unicode==pygame.K_COLON): #to match a colon
        pass
    elif (event.unicode== (pygame.K_Z | pygame.KMOD_SHIFT)): #to explicitly match a capital Z instead of just a z
       pass
...