所以当我尝试运行我的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
答案 0 :(得分:9)
您尚未在任何地方拨打pygame.init()
。
请参阅basic Intro tutorial或具体的Import and Initialize教程,其中解释了:
在使用pygame做很多事情之前,你需要初始化它。最常见的方法是拨打一个电话。
pygame.init()
这将尝试为您初始化所有pygame模块。并非所有pygame模块都需要初始化,但这会自动初始化那些。您也可以手动轻松初始化每个pygame模块。例如,仅初始化您要调用的字体模块。
在您的特定情况下,可能pygame.display
抱怨您先致电set_caption
或flip
而未先调用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)
pygame.init()
,则可以解决视频系统初始化的问题。
但您会收到下一个错误,例如:({
AttributeError: tuple object has no attribute 'fill'
)这个。
screen = pygame.display.set_mode((600, 400))
但不喜欢
screen = screen_width, screen_height = 600, 400
答案 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()
。