def Main_Code():
user_input = ''
Running= True
while Running:
FPS.tick(60)
for event in pygame.event.get():
if event.type == pygame.QUIT:
Running = False
quit()
elif event.type == pygame.KEYDOWN:
if event.type == pygame.K_BACKSPACE:
user_input = user_input[:-1]
elif event.type == pygame.K_RETURN:
user_input = ''
else:
user_input += event.unicode
print (user_input)
Screen.blit(bg,[0,0])
text = myfont.render(user_input, True, White)
Screen.blit(text, (20, 20))
pygame.display.update()
这不是我的全部代码,但是我正在使用pygame制作文字游戏。
用户输入正按预期显示在屏幕上,但是每当我按退格键删除单词的最后一个字符或按Enter清除整个用户输入时,它都会返回一个类似于此[]的框。
但是通过打印user_input,我可以看到user_input的更改正确,但是屏幕仍将显示带有框和我之前输入的文本的用户输入。
答案 0 :(得分:1)
您正在检查event.type == pygame.K_BACKSPACE
何时应为event.key == pygame.K_BACKSPACE
:
...
elif event.type == pygame.KEYDOWN:
if event.key == pygame.K_BACKSPACE: # <-- key instead of type
user_input = user_input[:-1]
elif event.key == pygame.K_RETURN: # <-- key instead of type
user_input = ''
else:
user_input += event.unicode
print (user_input)
...
您会看到这些奇怪的框,因为else
子句在您的代码中执行,并且在字符串中添加了不可打印的字符。