我正在创建一个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)
一个问题是它无法识别特殊字符,如(“:”,“;”,移位字符等)。是否有更好的方法来编写这样的代码?
答案 0 :(得分:2)
使用event.unicode
与get 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
...