Окно pygame зависает и пишет «Не отвечает» — как починить?
Сделал окно, рисую в нём прямоугольник. Окно появляется, но через секунду белеет, курсор крутится и сверху пишет (Не отвечает) / not responding. Закрыть могу только через диспетчер задач. Где косяк?
import pygame
pygame.init()
screen = pygame.display.set_mode((400, 300))
while True:
screen.fill((0, 100, 200))
pygame.display.flip()
2 ответа
Ты не обрабатываешь события. Windows ждёт, что программа будет регулярно «забирать» события окна (pygame.event.get()), и если этого не происходит — считает её зависшей и пишет Не отвечает.
Добавь в цикл разбор событий — буквально это и есть лекарство:
import pygame
pygame.init()
screen = pygame.display.set_mode((400, 300))
running = True
while running:
for event in pygame.event.get(): # вот это обязательно
if event.type == pygame.QUIT:
running = False
screen.fill((0, 100, 200))
pygame.display.flip()
pygame.quit()
Правило простое: в каждом кадре обязательно прокручивай pygame.event.get(), даже если тебе пока не нужны нажатия. Иначе окно будет «висеть».
Заодно сразу добавляй clock = pygame.time.Clock() и clock.tick(60) в конце цикла — без этого цикл крутится с бешеной скоростью и грузит процессор на 100%, что тоже похоже на «зависание».