pygame.error: видеосистема не инициализирована pygame.init () уже вызвана - PullRequest
0 голосов
/ 29 сентября 2019

Почему возникает эта ошибка? Я не понимаю, может кто-нибудь сказать, почему она возникает и как ее исправить?enter image description here

1 Ответ

0 голосов
/ 30 сентября 2019

Для каждого события в очереди событий вы вызываете pygame.quit(), который деинициализирует все модули Pygame:

pygame.quit()

деинициализировать все модули Pygame

quit() -> None

Деинициализировать все модули Pygame, которые были ранее инициализированы.Когда интерпретатор Python завершает работу, этот метод вызывается независимо, поэтому вашей программе он не нужен, за исключением случаев, когда он хочет завершить свои ресурсы Pygame и продолжить.Можно вызывать эту функцию более одного раза, поскольку повторные вызовы не имеют никакого эффекта.

Примечание Вызов pygame.quit() деинициализация всех модулей Pygame не приведет к выходу из вашей программы.Подумайте, чтобы ваша программа заканчивалась так же, как и обычная программа на Python.

Таким образом, на следующей итерации цикла while вызов pygame.event.get() не будет выполнен, поскольку видеосистема больше не инициализируется.

Вы должны проверить type атрибут объекта event против константы pygame.QUIT, и не вызывать функцию pygame.quit():

...
if event.type == pygame.QUIT:
    ...

Обычно нет необходимости вызывать pygame.quit().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...