pygame.error:视频系统未初始化

时间:2014-11-05 21:36:08

标签: python pygame

所以当我尝试运行我的pygame代码时出现此错误:  pygame.error:视频系统未初始化

我指定翼IDE告诉我它在下面的代码中的位置

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

9 个答案:

答案 0 :(得分:9)

您尚未在任何地方拨打pygame.init()

请参阅basic Intro tutorial或具体的Import and Initialize教程,其中解释了:

  

在使用pygame做很多事情之前,你需要初始化它。最常见的方法是拨打一个电话。

pygame.init()
  

这将尝试为您初始化所有pygame模块。并非所有pygame模块都需要初始化,但这会自动初始化那些。您也可以手动轻松初始化每个pygame模块。例如,仅初始化您要调用的字体模块。

在您的特定情况下,可能pygame.display抱怨您先致电set_captionflip而未先调用init。但实际上,正如教程所说,最好只在init顶部的所有内容,而不是试图弄清楚什么时候需要初始化。

答案 1 :(得分:1)

您收到错误是因为您尝试设置窗口标题(使用set_caption()),但您尚未创建pygame窗口,因此您的screen变量只是一个包含您的大小的元组未来的窗口。

要创建一个pygame窗口,您必须调用pygame.display.set_mode(windowSize)

祝你好运:)

答案 2 :(得分:1)

将代码更改为此,可避免该错误。 在跑步的时候: 时钟滴答(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 :(得分:0)

您必须添加:

pygame.init()

在退出显示之前,应停止while循环。

答案 4 :(得分:0)

  1. 如果您进行pygame.init(),则可以解决视频系统初始化的问题。 但您会收到下一个错误,例如:

({AttributeError: tuple object has no attribute 'fill')这个。


  1. 这个问题在您解决时就解决了
screen = pygame.display.set_mode((600, 400))

但不喜欢

screen = screen_width, screen_height = 600, 400

  1. 然后解决了整个问题。

答案 5 :(得分:0)

我对您的代码进行了一些修改:

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()

答案 6 :(得分:-1)

我最近遇到了这个问题,我在编写的代码中发现了一个奇怪且不寻常的错误-仅在读取并在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以下所有内容的一站式缩进。

答案 7 :(得分:-1)

1使用Beta版本时,会发生此问题。

2所以我的建议是使用新的旧版本(如果现在午餐3.8 python, 需要安装python 3.7)

3现在转到python终端并安装pygame(pip install pygame)

4现在问题已解决...

答案 8 :(得分:-1)

如果您在class窗口中使用pygame,请不要在pygame.init()中使用class。在库底部使用pygame.init()