You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

已调用pygame.init()与sys.exit()仍出现‘video system not initialized’错误的排查求助

解决Pygame的“video system not initialized”错误

嘿,刚看完你的代码,马上就发现了几个关键问题导致这个错误,咱们一个个说清楚:

1. 事件判断的致命错误

你写的if event.type == pygame.quit()是完全错误的!pygame.quit()是主动退出Pygame的函数,不是事件类型常量。当事件循环触发这个判断时,它会立刻调用pygame.quit()关闭视频系统,但你的主循环还在继续运行,后面的pygame.draw.rect、pygame.display.flip()这些操作都依赖视频系统,自然就抛出“video system not initialized”错误了。

正确的写法应该是判断pygame.QUIT事件(注意全大写,这是Pygame定义的事件常量):

if event.type == pygame.QUIT:
    playing = False

2. 矩形绘制的参数错误

pygame.draw.rect的第三个参数需要是完整的Rect对象(包含x坐标、y坐标、宽度、高度四个值),你现在只传了pygame.Rect(x,y),缺少宽高参数,而且后面的60,60放错了位置。正确的写法应该把宽高整合到Rect对象里:

pygame.draw.rect(window, colour, pygame.Rect(x, y, 60, 60))

或者直接用元组(x, y, 60, 60)代替Rect对象也可以。

3. 小细节:移动方向搞反了

你写的向上移动是y +=3,向下是y -=3,但Pygame的坐标系里y轴是向下为正,所以向上移动应该是y -=3,向下是y +=3,不然移动方向会完全反过来,这个虽然不影响错误,但会影响你的操作体验~

修正后的完整代码

import pygame
import sys

pygame.init()
window = pygame.display.set_mode([600,600])
playing = True
blue = True
x = 30  # Initial position x
y = 30  # Initial position y

while playing:
    for event in pygame.event.get():
        # 修正事件判断:使用pygame.QUIT常量
        if event.type == pygame.QUIT:
            playing = False
        if event.type == pygame.KEYDOWN and event.key == pygame.K_SPACE:
            blue = not blue

    pressed = pygame.key.get_pressed()
    # 修正移动方向,符合Pygame坐标系规则
    if pressed[pygame.K_UP]:
        y -= 3
    if pressed[pygame.K_DOWN]:
        y += 3
    if pressed[pygame.K_LEFT]:
        x -= 3
    if pressed[pygame.K_RIGHT]:
        x += 3

    # 可选优化:限制矩形在窗口内,防止移出屏幕
    x = max(0, min(x, 600-60))
    y = max(0, min(y, 600-60))

    colour = (0,128,255) if blue else (255,100,0)
    # 修正Rect参数,传入完整的坐标和尺寸
    pygame.draw.rect(window, colour, pygame.Rect(x, y, 60, 60))
    
    pygame.display.flip()

# 退出前可以先关闭Pygame,再终止程序
pygame.quit()
sys.exit()

现在运行修正后的代码,应该就能正常工作啦!如果还有问题随时提~

内容的提问来源于stack exchange,提问作者Virat Kohli

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.29 22:27:41