pygame.K_RETURN和pygame.K_BACKSPACE输出一个块

时间:2019-01-18 13:51:52

标签: python pygame

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的更改正确,但是屏幕仍将显示带有框和我之前输入的文本的用户输入。

1 个答案:

答案 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子句在您的代码中执行,并且在字符串中添加了不可打印的字符。