运行Python的Pygame脚本报错:NameError: name 'screen' is not defined
解决NameError: name 'screen' is not defined问题
错误原因
问题出在变量作用域和代码执行顺序上:
screen是main()函数内部定义的局部变量,函数外部的代码无法访问这个变量- 你在
main()执行前就调用了pygame.image.load()和screen.blit(),此时pygame还未初始化,不仅会触发screen未定义的错误,连图片加载都会失败
修正后的代码
import os import pygame def main(): pygame.init() logo = pygame.image.load("Screenshot_1.png") pygame.display.set_icon(logo) pygame.display.set_caption("minimal program") screen = pygame.display.set_mode((240,180)) # 将图片加载、绘制代码移到screen定义之后,且在main函数内部 image = pygame.image.load("Screenshot_2.png") screen.blit(image, (50, 50)) pygame.display.flip() running = True while running: for event in pygame.event.get(): if event.type == pygame.QUIT: running = False if __name__=="__main__": main()
关键修改说明
- 调整代码位置:把图片加载、绘制、显示刷新的代码全部移到
main()函数内部,放在screen = pygame.display.set_mode(...)之后,这样就能正确访问到screen变量 - 初始化顺序:确保
pygame.init()在所有pygame操作(加载图片、创建窗口)之前执行,避免初始化相关的错误 - 保留事件循环:原有的事件循环保留,保证窗口能正常响应关闭操作
内容的提问来源于stack exchange,提问作者user22014660
相关产品推荐
相关产品推荐

