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

运行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()

关键修改说明

  1. 调整代码位置:把图片加载、绘制、显示刷新的代码全部移到main()函数内部,放在screen = pygame.display.set_mode(...)之后,这样就能正确访问到screen变量
  2. 初始化顺序:确保pygame.init()在所有pygame操作(加载图片、创建窗口)之前执行,避免初始化相关的错误
  3. 保留事件循环:原有的事件循环保留,保证窗口能正常响应关闭操作

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 06:33:18