Pygame.error: видеосистема не инициализирована, ошибка python.display.update

У меня есть простой текстовый код печати pygame. Когда он запускается, он открывает окно pygame, а затем вылетает.

Я проверял несколько раз, если я ничего не пропустил, но я не могу найти ничего неправильного.

Код


import pygame
from pygame.locals import *

def draw():
    pygame.init();
    screen=pygame.display.set_mode((1600, 900))
    pygame.display.set_caption("Damn")
    font = pygame.font.Font('freesansbold.ttf', 32)
    text = font.render('0', True, (0, 0, 0))
    textRect=text.get_rect()
    textRect.center=(800, 450)


    while True:
        screen.fill((255, 255, 255))
        screen.blit(text, textRect)
        for event in pygame.event.get():
            if event.type -- pygame.QUIT:
                pygame.quit()
            pygame.display.update()

if __name__= = "__main__":
    draw();

Ошибка


Traceback (most recent call last):
  File "C:/Users/Ienovo/PycharmProjects/untitled/Base.py", line 23, in <module>
    draw();
  File "C:/Users/Ienovo/PycharmProjects/untitled/Base.py", line 20, in draw
    pygame.display.update()
pygame.error: video system not initialized


Ожидаемым результатом должен быть «0», напечатанный в центре.

Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
1
0
86
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Состояние:

if event.type -- pygame.QUIT:
    pygame.quit()

оценивает всегда True.

Должно быть:

if event.type == pygame.QUIT:
    pygame.quit()

Оператор равенства ==. См. Операторы.
Значение event.type -- pygame.QUIT равно event.type минус -pygame.QUIT.

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


Обновление отображения pygame.display.update() должно быть выполнено один раз в рамках основного цикла, а не цикла событий:

def draw():

    # [...]   

    run = True
    while True:
        screen.fill((255, 255, 255))
        screen.blit(text, textRect)
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                run = False

        # <---
        pygame.display.update()

    pygame.quit()

Спасибо, у pycharm странный вид, поэтому я не понимаю этого!

Shad82 29.05.2019 06:56

Другие вопросы по теме