Как удалить элементы, добавленные в строку с event.unicode в Pygame? - PullRequest
2 голосов
/ 30 апреля 2020

В моей программе есть функция, позволяющая игроку набирать его имя, которое затем появится на экране. Но есть ли способ, чтобы, например, когда игрок нажал клавишу возврата, последняя добавленная в строку буква удаляется?

Вот функция, я не думаю, что мне нужно писать остальную часть кода, касающуюся имени игрока:

def enter_player_name(self):
    player_name_screen = True
    while player_name_screen:
        win.blit(playerNameImg[self.namecount//1], (self.x_0, self.y_0))
        self.namecount += 1
        if (self.namecount + 1) >= 8:
            self.namecount = 0
        for event in pg.event.get():
            if event.type == pg.KEYDOWN:
                if event.key == pg.K_RETURN:
                    print(self.name)
                    player_name_screen = False
                    self.display = GAME_SCREEN
                else:
                    self.name += event.unicode
                    self.text_name = game_font.render(self.name, True, BLANC)
        win.blit(self.text_name, (500, 500))
        pg.display.update()

Спасибо за помощь!

1 Ответ

1 голос
/ 30 апреля 2020

Удаляет последний символ текста (self.name = self.name[:-1]) при нажатии клавиши возврата и отображает новый текст:

if event.key == pg.K_RETURN:
    print(self.name)
    player_name_screen = False
    self.display = GAME_SCREEN

elif event.key == pg.K_BACKSPACE:
    self.name = self.name[:-1]
    self.text_name = game_font.render(self.name, True, BLANC)

else:
    self.name += event.unicode
    self.text_name = game_font.render(self.name, True, BLANC)

...