pygame.K_RETURN и pygame.K_BACKSPACE, выводящие блок - PullRequest
0 голосов
/ 18 января 2019

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, чтобы сделать игру в падающие слова.

Пользовательский ввод отображается на экране, как и предполагалось, но всякий раз, когда я нажимаю клавишу Backspace, чтобы удалить последний символ слова, или нажимаю клавишу Enter, чтобы очистить весь пользовательский ввод, он возвращает окно, похожее на это [].

Но из распечатки user_input я вижу, что user_input изменяется правильно, но на экране все равно будет отображаться пользовательский ввод с полями и текстом, который я вводил ранее.

1 Ответ

0 голосов
/ 18 января 2019

Вы проверяете 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 и в строку добавляется непечатный символ.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...