#python #pygame
Вопрос:
Я получаю эту ошибку всякий раз, когда пытаюсь выполнить свой pygame
код: pygame.error: video system not initialized
from sys import exit
import pygame
from pygame.locals import *
black = 0, 0, 0
white = 255, 255, 255
red = 255, 0, 0
green = 0, 255, 0
blue = 0, 0, 255
screen = screen_width, screen_height = 600, 400
clock = pygame.time.Clock()
pygame.display.set_caption("Physics")
def game_loop():
fps_cap = 120
running = True
while running:
clock.tick(fps_cap)
for event in pygame.event.get(): # error is here
if event.type == pygame.QUIT:
running = False
screen.fill(white)
pygame.display.flip()
pygame.quit()
exit()
game_loop()
#!/usr/bin/env python
Ответ №1:
Ты никуда не звонил pygame.init()
.
См. Основное руководство по вводной части или специальное руководство по импорту и инициализации, в котором объясняется:
Прежде чем вы сможете многое сделать с pygame, вам нужно будет его инициализировать. Самый распространенный способ сделать это-просто сделать один звонок.
pygame.init()
Это будет попытка инициализировать все модули pygame для вас. Не все модули pygame необходимо инициализировать, но это автоматически инициализирует те, которые это делают. Вы также можете легко инициализировать каждый модуль pygame вручную. Например, чтобы только инициализировать модуль шрифта, вы просто вызовете.
В вашем конкретном случае, вероятно pygame.display
, это жалоба на то, что вы позвонили либо its set_caption
, либо its flip
, не позвонив init
сначала. Но на самом деле, как говорится в руководстве, лучше просто init
все наверху, чем пытаться выяснить, что именно нужно инициализировать, когда.
Ответ №2:
Изменение кода на этот позволяет избежать этой ошибки. во время работы: clock.tick(fps_cap)
for event in pygame.event.get(): #error is here
if event.type == pygame.QUIT:
running = False
pygame.quit()
if running:
screen.fill(white)
pygame.display.flip()
Ответ №3:
Вы получаете ошибку, потому что пытаетесь установить заголовок окна (с set_caption()
), но вы не создали окно pygame, поэтому ваша screen
переменная-это просто кортеж, содержащий размер вашего будущего окна.
Чтобы создать окно pygame, вам нужно позвонить pygame.display.set_mode(windowSize)
.
Удачи
Ответ №4:
Недавно у меня возникла эта проблема, и я обнаружил странную и необычную ошибку в написанном мной коде-только после того, как прочитал его и перечитал дюжину раз в течение 10 минут, пытаясь запустить файл (который выглядел идеально) дюжину раз.
Там был pygame.init()
. Там была screen = pygame.display.set_mode((size))
переменная размера, доступная в глобальном пространстве имен.
Оказывается, это был основной игровой цикл.
# main game loop
while RUNNING == True:
for tneve in pygame.event.get():
if tneve.type == QUIT:
print(tneve)
RUNNING = False
loop()
render()
CLOCK.tick(FPS)
cleanup()
# End
Какая боль!
P.S. Проблема заключается в слишком большом отступе всего, что приведено ниже RUNNING = False
.
Комментарии:
1. Это отличная история, Тим, и спасибо, что поделился с нами, но она не отвечает на вопрос и описывает другую проблему.
Ответ №5:
- Если вы это сделаете
pygame.init()
, то решите проблему с инициализацией видеосистемы. но вы получаете следующую ошибку, например:
(
AttributeError: tuple object has no attribute 'fill'
) это.
- эта проблема решается, когда вы делаете это
screen = pygame.display.set_mode((600, 400))
но не делать так, как
screen = screen_width, screen_height = 600, 400
- Тогда вся проблема будет решена.
Ответ №6:
Я внес некоторые изменения в ваш код:
import os
import sys
import math
import pygame
import pygame.mixer
from pygame.locals import *
pygame.init()
black = 0, 0, 0
white = 255, 255, 255
red = 255, 0, 0
green = 0, 255, 0
blue = 0, 0, 255
screen = pygame.display.set_mode((600, 400))
clock = pygame.time.Clock()
pygame.display.set_caption("Physics")
while True:
clock.tick(120)
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
screen.fill(green)
pygame.display.flip()
Ответ №7:
Вам просто нужно добавить
exit()
Чтобы остановить выполнение
примера кода :
for event in pygame.event.get(): #error is here
if event.type == pygame.QUIT:
running = False
exit() # Solution
Ответ №8:
Вы должны добавить:
pygame.init()
Прежде чем выйти из дисплея, вы должны остановить цикл while.
Ответ №9:
Если вы используете class
для своего pygame
окна, не используйте pygame.init()
в своем class
. Используйте pygame.init()
в нижеприведенных библиотеках.
Ответ №10:
- Вам необходимо инициализировать pygame с помощью этой команды
pygame.init
If the problem is not solved then following this step
- эта проблема возникает при использовании бета-версии.
- поэтому я предлагаю, пожалуйста, использовать новую, старую версию(если сейчас есть python 3.8, вам нужно установить python 3.7).
- Теперь перейдите к терминалу python и установите pygame (pip install pygame)
- теперь проблема решена…