Я недавно написал еще один модуль, который упрощает вставку текста. Вы просто создаете объект TextInput
, затем загружаете его событиями в каждый кадр вашей игры и, наконец, возвращаете отображаемую поверхность, используя get_surface()
.
Вот пример программы, которая демонстрирует, как использовать его:
import pygame_textinput # Import the textinput-module
import pygame
pygame.init()
# Create TextInput-object
textinput = pygame_textinput.TextInput()
screen = pygame.display.set_mode((1000, 200))
clock = pygame.time.Clock()
while True:
screen.fill((225, 225, 225))
events = pygame.event.get()
for event in events:
if event.type == pygame.QUIT:
exit()
# Feed it with events every frame
textinput.update(events)
# Blit its surface onto the screen
screen.blit(textinput.get_surface(), (10, 10))
pygame.display.update()
clock.tick(30)
Если вы хотите, чтобы обработать ввод данных пользователем после того, как он нажал return
, просто ждать, пока update()
-метод возвращается True
:
if textinput.update(events):
foo()
Более подробную информацию и исходный код можно найти на [моей странице github] (my github page.