我正在制作一个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)
一个问题是,它不识别特殊字符,如(":",";",移位字符等)有没有更好的方法来编码这样的东西?
使用event.unicode
来获取您正在寻找的内容
…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
...