so I get this error when I try to run my pygame code: pygame.error: video system not initialized
i specify where the wing IDE tells me it is in the code below
import os import sys import math import pygame import pygame.mixer 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") 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() sys.exit #!/usr/bin/env python
You haven’t called
Before you can do much with pygame, you will need to initialize it. The most common way to do this is just make one call.
This will attempt to initialize all the pygame modules for you. Not all pygame modules need to be initialized, but this will automatically initialize the ones that do. You can also easily initialize each pygame module by hand. For example to only initialize the font module you would just call.
In your particular case, it’s probably
pygame.display that’s complaining that you called either its
set_caption or its
flip without calling its
init first. But really, as the tutorial says, it’s better to just
init everything at the top than to try to figure out exactly what needs to be initialized when.
You get an error because you try to set the window title (with
set_caption()) but you haven’t created a pygame window, so your
screen variable is just a tuple containing the size of your future window.
To create a pygame window, you have to call
Good luck 🙂
I had this issue recently, and I discovered a strange and unusual bug in the code that I’d written — only after reading it and re-reading it a dozen times over a 10 minute stretch, trying to launch the file (which looked perfect) a dozen times.
pygame.init(). There was
screen = pygame.display.set_mode((size)) with the variable size in position to be available in the global namespace.
Turns out it was the main game loop.
# 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
What a pain!
The problem is the one-stop-too-far indentation of everything below
RUNNING = False.
- If you doing
pygame.init()then solve the problem video system initialized. but you get the next error like:
AttributeError: tuple object has no attribute 'fill') this.
- this problem is solving when you doing this
screen = pygame.display.set_mode((600, 400))
but not doing like
screen = screen_width, screen_height = 600, 400
- Then the full problem is solved.
I made some modifications to your code:
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()
Changing code to this, avoids that error. while running: 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()
You have to add:
Before you quit the display you should stop the while loop.
If you using
class for your
pygame window don’t use
pygame.init() in your
pygame.init() at bottom the libraries.
1 this problem happens when you using a beta version.
2 so my suggestion is please use the new, old version(If now lunch 3.8 python, you need to install python 3.7)
3 Now goto python terminal and install pygame (pip install pygame)
4 now the problem is solved…