运行Pygame代码时VS Code下窗口直接关闭、Jupyter下无响应无报错如何解决
问题根因排查
1. 核心错误:入口判断条件异常
你代码里的入口判断写为:
if __name__ == "__GAME!__": main()
Python 脚本直接运行时,全局变量__name__的固定默认值为__main__,你填写的自定义值__GAME!__永远不会匹配,因此main()函数从头到尾都没有执行。
2. 两类异常场景的对应原因
- VS Code运行时窗口直接关闭:VS Code执行.py文件时,脚本会从上到下依次执行全局作用域的代码(包括创建pygame窗口、设置标题的逻辑),但由于
main()未被调用,脚本执行完全部代码后直接退出,进程结束后窗口被系统自动回收,因此会出现窗口闪一下就消失的情况。 - Jupyter notebook运行时无响应:Jupyter的内核是常驻进程,全局作用域的代码执行完创建窗口后,进程不会主动退出,但由于
main()内的事件循环没有启动,pygame没有处理系统事件的逻辑,操作系统就会判定窗口处于无响应状态。
修复方案
修改两处代码即可正常运行:
- 补全pygame初始化语句(符合官方规范,避免部分环境下运行异常)
- 修正入口判断条件为标准的
__main__
修复后的完整代码如下:
import pygame # 新增pygame初始化 pygame.init() WIDTH, HEIGHT = 1100, 600 WIN = pygame.display.set_mode((WIDTH, HEIGHT)) pygame.display.set_caption("Game") WHITE = (255, 255, 255) def main(): run = True while run: for event in pygame.event.get(): if event.type == pygame.QUIT: run = False WIN.fill(WHITE) pygame.display.update() pygame.quit() # 修正入口判断条件 if __name__ == "__main__": main()
内容的提问来源于stack exchange,提问作者Centauri
相关产品推荐
相关产品推荐

