4

我正在制作一个 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) 

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

4

1 回答 1

2

用于event.unicode获取您要查找的内容

... pygame.KEYDOWN 事件有一个额外的属性 unicode 和 scancode。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
...
于 2013-01-08T22:45:18.590 回答