Cómo agregar texto en un rectángulo de pygame

He llegado tan lejos como para dibujar un rectángulo en pygame, pero necesito poder ingresar texto como “Hola” en ese rectángulo. ¿Cómo puedo hacer esto? (Si puede explicarlo también sería muy apreciado. Gracias)

Aquí está mi código:

import pygame import sys from pygame.locals import * white = (255,255,255) black = (0,0,0) class Pane(object): def __init__(self): pygame.init() pygame.display.set_caption('Box Test') self.screen = pygame.display.set_mode((600,400), 0, 32) self.screen.fill((white)) pygame.display.update() def addRect(self): self.rect = pygame.draw.rect(self.screen, (black), (175, 75, 200, 100), 2) pygame.display.update() def addText(self): #This is where I want to get the text from if __name__ == '__main__': Pan3 = Pane() Pan3.addRect() while True: for event in pygame.event.get(): if event.type == pygame.QUIT: pygame.quit(); sys.exit(); 

Gracias por tu tiempo.

Primero tienes que crear un objeto de Font (o SysFont ). Llamar al método de render en este objeto devolverá una Surface con el texto dado, que puede borrar en la pantalla o en cualquier otra Surface .

 import pygame import sys from pygame.locals import * white = (255,255,255) black = (0,0,0) class Pane(object): def __init__(self): pygame.init() self.font = pygame.font.SysFont('Arial', 25) pygame.display.set_caption('Box Test') self.screen = pygame.display.set_mode((600,400), 0, 32) self.screen.fill((white)) pygame.display.update() def addRect(self): self.rect = pygame.draw.rect(self.screen, (black), (175, 75, 200, 100), 2) pygame.display.update() def addText(self): self.screen.blit(self.font.render('Hello!', True, (255,0,0)), (200, 100)) pygame.display.update() if __name__ == '__main__': Pan3 = Pane() Pan3.addRect() Pan3.addText() while True: for event in pygame.event.get(): if event.type == pygame.QUIT: pygame.quit(); sys.exit(); 

introduzca la descripción de la imagen aquí

Tenga en cuenta que su código parece un poco extraño, ya que normalmente hace todo el dibujo en el bucle principal, no de antemano. Además, cuando haga un uso intensivo del texto en su progtwig, considere almacenar en caché el resultado de Font.render , ya que es una operación muy lenta.