-2

所以,这是我的代码,我是通过观看教程来正常编码的,但是当我使用填充属性时,突然出现一个错误,提示如下:

第 15 行,在 display.fill((25, 25, 29)) AttributeError: 'NoneType' object has no attribute 'fill'

下面是我写的代码,如果有人愿意帮助我,我会很高兴!

下面是我的代码

import pygame

pygame.init()

pygame.display.set_mode((800, 600))

display = pygame.display.set_caption("Space Invaders!")

running = True
while running:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False

display.fill((25, 25, 29))
pygame.display.update()
4

2 回答 2

3

虽然我没有 pygame 所以我无法测试代码,但我强烈怀疑您的问题与这三行以及它们之间的关系有关:

pygame.display.set_mode((800, 600))

display = pygame.display.set_caption("Space Invaders!")

display.fill((25, 25, 29))

您已经设置了显示模式,现在要填充它。但是,您实际上并没有分配display.set_mode()to的输出,而是分配了 -display的输出display.set_caption(),正如其他人已经评论的那样,它什么都不是,因为display.set_caption()它不返回值。

因此,当您尝试使用 时display,它不包含任何内容。

考虑改用以下代码(尽管我不知道顺序是否重要):

display = pygame.display.set_mode((800, 600))

pygame.display.set_caption("Space Invaders!")
于 2021-05-12T18:22:26.693 回答
1

我怀疑 pygame 未能初始化。这传播到:

display = pygame.display.set_caption("Space Invaders!")

返回运行时最终失败的“NoneType”对象:

display.fill((25, 25, 29))

在“display =...”处使用断点来查看返回值。

在进一步查看之后......它与语法/格式相关。以下是我的更正:

import pygame

pygame.init()

screen = pygame.display.set_mode((800, 600))
display = pygame.display.set_caption("Space Invaders!")

running = True
while running:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False
        screen.fill((25, 25, 29))
        pygame.display.update()
于 2021-05-12T18:04:21.283 回答