Как пишет @Furas, код обновления экрана не вызывается из цикла. Python использует отступ для обозначения блоков кода, поэтому, если вызов функции (или другой раздел кода) не имеет отступа для правильного столбца, это буквально совершенно другой набор операций.
Поскольку фрагмент кода кода стоит тысячи слов:
import pygame,sys
pygame.init()
screen = pygame.display.set_mode((800,600))
game_over = False
while not game_over:
# Handle user-events
for event in pygame.event.get():
if event.type == pygame.QUIT:
game_over = True
# Re-draw the screen
pygame.draw.rect(screen, (255,0,0), (400,300,50,50))
pygame.display.flip()
pygame.quit()
sys.exit()