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) 

1 つの問題は、(":"、";"、シフト文字など) のような特殊文字を認識しないことです。このようなコードを作成するためのより良い方法はありますか?

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 に答える