Pygame窗口异常求助:默认最小化、颜色不更新且点击后崩溃
Pygame窗口异常问题解决(Windows 10 + Spyder Python3.9)
问题现象
- 程序启动后窗口默认最小化,不会直接弹出显示
- 手动打开窗口后始终是黑色,无法变成设置的白色背景
- 窗口打开后立刻无响应,Windows提示“Python未响应”,点击关闭按钮也触发同样提示,且无语法或运行时错误
错误原因
- 入口判断完全错误:代码最后一行的
if __name__ == "__space_shooter__":不符合Python规则——脚本直接运行时,__name__的固定值是"__main__",这个错误导致核心的main()函数根本没被执行。全局代码里创建了窗口,但没有进入事件循环处理渲染和用户操作,所以窗口卡成无响应且一直是黑色。 - 遗漏Pygame初始化:原代码没调用
pygame.init(),这是Pygame程序的必要步骤,缺少它会导致模块功能异常。 - 窗口创建位置不合理:在全局作用域创建窗口,结合入口错误,导致窗口孤立存在,没有后续的更新逻辑支撑。
修正后的完整代码
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
相关产品推荐
相关产品推荐

