En este artículo veremos cómo jugar con textos utilizando el módulo Pygame. Nos ocuparemos aquí de inicializar la fuente, renderizar el texto, editar el texto usando el teclado y agregar una nota de cursor parpadeante.
Instalación
Para instalar este módulo, escriba el siguiente comando en la terminal.
pip install pygame
Inicialización de fuentes
Ahora podemos continuar con la parte de inicialización de fuentes. El método pygame.font.init() se usa para inicializar la fuente y el método pygame.font.get_init() se usa para verificar si la fuente se ha inicializado o no. Ambos métodos no requieren ningún argumento. Si la fuente se ha inicializado correctamente, el método pygame.font.get_init() devuelve verdadero.
Impresión de texto en la ventana
Aquí veremos cómo obtener una fuente y texto personalizados en la pantalla. Estableceremos la posición de los textos que se mostrarán en la pantalla usando las coordenadas x e y. Primero, crearemos los archivos de fuentes y luego renderizaremos los textos. la pantalla La función blit() se usa para copiar los objetos de superficie de texto a los objetos de superficie de visualización en las coordenadas centrales.
Python3
# import pygame import pygame # initializing pygame pygame.font.init() # check whether font is initialized # or not pygame.font.get_init() # create the display surface display_surface = pygame.display.set_mode((500, 500)) # change the window screen title pygame.display.set_caption('Our Text') # Create a font file by passing font file # and size of the font font1 = pygame.font.SysFont('freesanbold.ttf', 50) font2 = pygame.font.SysFont('chalkduster.ttf', 40) # Render the texts that you want to display text1 = font1.render('GeeksForGeeks', True, (0, 255, 0)) text2 = font2.render('GeeksForGeeks', True, (0, 255, 0)) # create a rectangular object for the # text surface object textRect1 = text1.get_rect() textRect2 = text2.get_rect() # setting center for the first text textRect1.center = (250, 250) # setting center for the second text textRect2.center = (250, 300) while True: # add background color using RGB values display_surface.fill((255, 0, 0)) # copying the text surface objects # to the display surface objects # at the center coordinate. display_surface.blit(text1, textRect1) display_surface.blit(text2, textRect2) # iterate over the list of Event objects # that was returned by pygame.event.get() # method. for event in pygame.event.get(): if event.type == pygame.QUIT: # deactivating the pygame library pygame.quit() # quitting the program. quit() # update the display pygame.display.update()
Producción:
Entrada de cursor en la ventana
Vamos a agregar una nota de cursor parpadeante aquí. Nuestro cursor seguirá parpadeando cada 0,5 segundos. También podemos editar nuestro texto.
Python3
# import pygame module import pygame # import time module import time # initialize the pygame module pygame.init() # set the window screen size display_screen = pygame.display.set_mode((500, 500)) # add some text text = 'Hello Guys!!' # add default font style with font # size font = pygame.font.SysFont(None, 40) # render the text img = font.render(text, True, (255, 0, 0)) rect = img.get_rect() rect.topleft = (20, 20) cursor = pygame.Rect(rect.topright, (3, rect.height)) running = True while running: for event in pygame.event.get(): if event.type == pygame.QUIT: running = False # detect if key is physically # pressed down if event.type == pygame.KEYDOWN: if event.key == pygame.K_BACKSPACE: if len(text) > 0: # stores the text except last # character text = text[:-1] else: text += event.unicode img = font.render(text, True, (255, 0, 0)) rect.size = img.get_size() cursor.topleft = rect.topright # Add background color to the window screen display_screen.fill((200, 255, 200)) display_screen.blit(img, rect) # cursor is made to blink after every 0.5 sec if time.time() % 1 > 0.5: pygame.draw.rect(display_screen, (255, 0, 0), cursor) # update display pygame.display.update() pygame.quit()
Producción:
Cuadro de entrada en la ventana
Aquí veremos cómo leer el texto usando el teclado en pygame. Vamos a mostrar nuestro texto dentro de un rectángulo. Cuando el mouse se coloca sobre el rectángulo, el color del rectángulo cambia. Se han agregado comentarios al código para una comprensión clara.
Python3
# import pygame module import pygame # import sys library import sys # initializing pygame pygame.init() clock = pygame.time.Clock() # Set the window screen size display_screen = pygame.display.set_mode((500, 500)) # add font style and size base_font = pygame.font.Font(None, 40) # stores text taken by keyboard user_text = '' # set left, top, width, height in # Pygame.Rect() input_rect = pygame.Rect(200, 200, 140, 32) color_active = pygame.Color("lightskyblue") color_passive = pygame.Color("gray15") color = color_passive active = False while True: for event in pygame.event.get(): if event.type == pygame.QUIT: pygame.quit() sys.exit() # when mouse collides with the rectangle # make active as true if event.type == pygame.MOUSEBUTTONDOWN: if input_rect.collidepoint(event.pos): active = True # if the key is physically pressed down if event.type == pygame.KEYDOWN: if event.key == pygame.K_BACKSPACE: # stores text except last letter user_text = user_text[0:-1] else: user_text += event.unicode display_screen.fill((0, 0, 0)) if active: color = color_active else: color = color_passive pygame.draw.rect(display_screen, color, input_rect) # render the text text_surface = base_font.render(user_text, True, (255, 255, 255)) display_screen.blit(text_surface, (input_rect.x + 5, input_rect.y + 5)) input_rect.w = max(100, text_surface.get_width() + 10) pygame.display.flip() clock.tick(60)
Producción:
Publicación traducida automáticamente
Artículo escrito por annulata2402 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA