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

运行Pygame项目提示Settings对象无screen属性报错该如何解决?

报错原因
  • 核心错误为属性名拼写错误:你在调用pygame.display.set_mode传参时,将Settings类中定义的screen_height属性错误写为screen.height,相当于尝试访问ai_settings下的screen对象的height属性,但Settings类根本没有定义screen属性,因此触发AttributeError。
  • 次要逻辑问题:当前代码将屏幕填充、画面刷新的逻辑写在了事件遍历的for循环内部,会导致每处理一个事件就重绘一次屏幕,性能冗余且可能出现画面刷新异常。
解决方案

修改main.py文件,修正拼写错误并调整刷新逻辑位置,修正后的完整代码如下:

import sys
import pygame
from settings import Settings

def run_game():
    pygame.init()
    ai_settings = Settings()
    # 此处将错误的ai_settings.screen.height改为正确的ai_settings.screen_height
    screen = pygame.display.set_mode(
        (ai_settings.screen_width, ai_settings.screen_height))
    pygame.display.set_caption("Rocket Flying")

    while True:
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                sys.exit()
        # 屏幕填充、刷新逻辑移到事件遍历外部,每轮主循环只执行一次
        screen.fill(ai_settings.bg_color)
        pygame.display.flip()

run_game()

settings.py文件无需修改,运行修正后的代码即可正常启动游戏窗口。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 21:06:02