Вы должны заботиться о отступе
В то время как pygame.quit()
должно быть сделано после основного заявления l oop (как упомянуто в другом ответе и комментариях), рисунок Сцена и обновление дисплея должны выполняться в основном приложении l oop, а не в событии l oop:
import pygame, sys, math
pygame.init()
size = width, height = 600, 400
screen = pygame.display.set_mode((width, height))
ball = pygame.image.load("GolfBall.png").convert_alpha()
ball_rect= ball.get_rect()
# application loop
is_playing= True
while is_playing:
# event loop
for event in pygame.event.get():
if event.type == pygame.QUIT:
is_playing= False
#<--| INDENTATION
# draw the scene
screen.fill((0,0,0))
screen.blit(ball, ball_rect)
pygame.display.flip()
pygame.time.wait(20)
#<--| INDENTATION
# quit pygame
pygame.quit()
sys.exit()
Обратите внимание, что событие l oop выполняется один раз для каждое событие, но приложение l oop выполняется один раз для каждого кадра.