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

Pygame窗口异常求助:默认最小化、颜色不更新且点击后崩溃

Pygame窗口异常问题解决(Windows 10 + Spyder Python3.9)

问题现象

  • 程序启动后窗口默认最小化,不会直接弹出显示
  • 手动打开窗口后始终是黑色,无法变成设置的白色背景
  • 窗口打开后立刻无响应,Windows提示“Python未响应”,点击关闭按钮也触发同样提示,且无语法或运行时错误

错误原因

  1. 入口判断完全错误:代码最后一行的if __name__ == "__space_shooter__":不符合Python规则——脚本直接运行时,__name__的固定值是"__main__",这个错误导致核心的main()函数根本没被执行。全局代码里创建了窗口,但没有进入事件循环处理渲染和用户操作,所以窗口卡成无响应且一直是黑色。
  2. 遗漏Pygame初始化:原代码没调用pygame.init(),这是Pygame程序的必要步骤,缺少它会导致模块功能异常。
  3. 窗口创建位置不合理:在全局作用域创建窗口,结合入口错误,导致窗口孤立存在,没有后续的更新逻辑支撑。

修正后的完整代码

import pygame

WIDTH, HEIGHT = 900, 500

# 颜色预设
WHITE = (255,255,255)
BLACK = (0,0,0)

# 主事件循环
def main():
    # 初始化Pygame核心模块
    pygame.init()
    # 创建窗口并设置标题
    WIN = pygame.display.set_mode((WIDTH, HEIGHT))
    pygame.display.set_caption("Space Shooter Friends (Version 1.0)")
    
    run = True
    while run:
        # 处理所有事件
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                run = False
        # 填充白色背景并更新显示
        WIN.fill(WHITE) 
        pygame.display.update()
    # 退出Pygame
    pygame.quit()

# 正确的脚本入口判断
if __name__ == "__main__":
    main()   

核心修正说明

  • 把入口判断的__space_shooter__改成__main__,确保main()函数能正常启动
  • 新增pygame.init(),初始化Pygame所有必要模块
  • 将窗口创建、标题设置移到main()函数内部,让逻辑流程更清晰,避免全局初始化的问题
  • 现在事件循环会正常运行,窗口能直接显示白色背景,点击关闭按钮也能正常退出程序

内容的提问来源于stack exchange,提问作者Frédéric Chopin

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 08:05:13