源代码:
import pygame
pygame.init()
screen = pygame.display.set_mode((500,600))
clock = pygame.time.Clock()
pygame.display.set_caption('飞机大战')
class Player(pygame.sprite.Sprite):
def __init__(self):
pygame.sprite.Sprite.__init__(self)
self.image = 'C:\\python\\venv\\飞机大战\\Python飞机大战\\player.ico'
self.rect = self.image.get_rect()
self.rect.center = (200,200)
all_sprites = pygame.sprite.Group()
player = Player()
all_sprites.add(player)
running = True
while running:
for event in pygame.event.get():
clock.tick(60)
if event.type == pygame.QUIT:
running = False
screen.fill((255,255,255))
all_sprites.draw(screen)
pygame.display.update()
pygame.quit()
为什么定义了image和Player类却报错:
Traceback (most recent call last):
File "C:\python\venv\飞机大战\飞机大战.py", line 18, in <module>
player = Player()
^^^^^^^^
File "C:\python\venv\飞机大战\飞机大战.py", line 14, in __init__
self.rect = self.image.get_rect()
^^^^^^^^^^^^^^^^^^^
AttributeError: 'str' object has no attribute 'get_rect'
求解答
self.image = pygame.image.load(r'C:\python\venv\飞机大战\Python飞机大战\player.ico')
self.rect = self.image.get_rect()
字符串对象没有get_rect方法
self.image = pygame.image.load('C:\python\venv\飞机大战\Python飞机大战\player.ico')转换一下,在使用get_rect方法
14行改成self.image = pygame.image.load('C:\python\venv\飞机大战\Python飞机大战\player.ico')
应该调用Surface对象的get_rect方法而非str