Cuando un número se borra en la ventana de pygame cuando el usuario presiona una tecla numérica más de una vez, se sobrescribe. Quiero una forma de que no se sobrescriba

Estoy haciendo una calculadora con PyGame y estoy progresando bien. Pero cuando pulso un número que presiona el usuario, lo sobrescribe. ¿Alguien puede decirme cómo establecer una regla como si un personaje está en la ventana y luego, cuando lo borras de nuevo, lo borras a un lado o lejos de él? Aquí está mi código

import pygame, math

pygame.init()
screen_width = 1200
screen_height = 500
gameWindow = pygame.display.set_mode((screen_width, screen_height))
pygame.display.set_caption('Calculator')
red = (255, 0, 0)
green = (0, 255, 0) 
blue = (0, 0, 255)
white = (255, 255, 255)
black = (0, 0, 0)
grey = (128, 128, 128)
font = pygame.font.SysFont('comicsans', 40)
fps = 60
clock = pygame.time.Clock()

def text_screen(text, color, x, y):
    screen_text = font.render(text, True, color)
    gameWindow.blit(screen_text, [x ,y])

def welcome_screen(run):

    clock.tick(fps) 
    gameWindow.fill(grey)
    while not run:
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                run = True
        pygame.display.update()
def gameLoop(run):
     clock.tick(fps)
     gameWindow.fill(grey)
     while not run:
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                run = True
            if event.type == pygame.KEYDOWN:
                key = pygame.key.name(event.key)
                iter(key)
                if key.isnumeric():
                    text_screen(key, red, 45, 45)
            
        pygame.display.update()
     

if __name__ == "__main__":
    gameLoop(False)
Answer

Puedes llenar la pantalla primero.

def text_screen(text, color, x, y):
    screen_text = font.render(text, True, color)
    gameWindow.fill(grey)

    gameWindow.blit(screen_text, [x, y])
Nuevo colaborador
Lupo is a new contributor to this site. Take care in asking for clarification, commenting, and answering. Check out our Code of Conduct.

aquí hay una posibilidad.

def gameLoop(run):
    clock.tick(fps)
    gameWindow.fill(grey)
    pos_x = 45
    pos_y = 45

    while not run:
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                run = True
            if event.type == pygame.KEYDOWN:
                key = pygame.key.name(event.key)
                iter(key)
                if key.isnumeric():
                    pos_x += 45
                    pos_y += 45
                    text_screen(key, red, pos_x, pos_y)
        pygame.display.update()
Nuevo colaborador
Lupo is a new contributor to this site. Take care in asking for clarification, commenting, and answering. Check out our Code of Conduct.