''list'对象没有属性'get_rect'错误如何解决?

问题描述 投票:1回答:2

所以我在这里有了这个脚本,并且我得到这个错误的'列表'对象没有属性'get_rect',我不确定如何解决此问题

error  'list' object has no attribute 'get_rect'

这是将我的播放器图像移到我的方形点击框中

    def draw(self):
        self.topleft = (self.x,self.y)
        player_rect = rights.get_rect(center = self.rect.center) 
        player_rect.centerx += 0 # 10 is just an example
        player_rect.centery += 0 # 15 is just an example

这是我的播放器类,我在下面存储代码

# my players class
class player:
   def __init__(self,x,y,height,width,color):
       self.x = x
       self.y = y
       self.height = height
       self.width = width
       self.color = color
       self.isJump = False
       self.JumpCount = 10
       self.fall = 0
       self.speed = 5
       self.standingleft =[pygame.image.load("s1.png"),
           pygame.image.load("s2.png"),
           pygame.image.load("s3.png"),
           pygame.image.load("s4.png"),
           pygame.image.load("s5.png"),
           pygame.image.load("s6.png"),
           pygame.image.load("s7.png"),
           pygame.image.load("s8.png"),
           pygame.image.load("s9.png"),
           pygame.image.load("s10.png"),
           pygame.image.load("s11.png"),
           pygame.image.load("s12.png"),
           pygame.image.load("s13.png"),
           pygame.image.load("s14.png"),
           pygame.image.load("s15.png")]

       self.standingright = [pygame.image.load("d1.png"),
               pygame.image.load("d2.png"),
               pygame.image.load("d3.png"),
               pygame.image.load("d4.png"),
               pygame.image.load("d5.png"),
               pygame.image.load("d6.png"),
               pygame.image.load("d7.png"),
               pygame.image.load("d8.png"),
               pygame.image.load("d9.png"),
               pygame.image.load("d10.png"),
               pygame.image.load("d11.png"),
               pygame.image.load("d12.png"),
               pygame.image.load("d13.png"),
               pygame.image.load("d14.png"),
               pygame.image.load("d15.png")]


       self.rights = [pygame.image.load("L1.png"),
       pygame.image.load("L2.png"),
       pygame.image.load("L3.png"),
       pygame.image.load("L4.png"),
       pygame.image.load("L5.png"),
       pygame.image.load("L6.png"),
       pygame.image.load("L7.png"),
       pygame.image.load("L8.png"),
       pygame.image.load("L9.png"),
       pygame.image.load("L10.png"),
       pygame.image.load("L11.png"),
       pygame.image.load("L12.png"),
       pygame.image.load("L13.png"),
       pygame.image.load("L14.png"),
       pygame.image.load("L15.png")]


       self.lefts = [pygame.image.load("e1.png"),
       pygame.image.load("e2.png"),
       pygame.image.load("e3.png"),
       pygame.image.load("e4.png"),
       pygame.image.load("e5.png"),
       pygame.image.load("e6.png"),
       pygame.image.load("e7.png"),
       pygame.image.load("e8.png"),
       pygame.image.load("e9.png"),
       pygame.image.load("e10.png"),
       pygame.image.load("e11.png"),
       pygame.image.load("e12.png"),
       pygame.image.load("e13.png"),
       pygame.image.load("e14.png"),
       pygame.image.load("e15.png")]

       self.left_index = 0
       self.right_index = 0
       self.stand_index = 0
       self.anim_index = 0
       self.direction = "left"
       self.direction = "right"
       self.direction = "standright"
       self.rights = [pygame.transform.scale(image,(image.get_width()-400,image.get_height()-400)) for image in self.rights]
       self.lefts = [pygame.transform.scale(image,(image.get_width()-10,image.get_height()-10)) for image in self.lefts]
       self.standingright = [pygame.transform.scale(image,(image.get_width()-10,image.get_height()-10)) for image in self.standingright]
       self.standingleft = [pygame.transform.scale(image,(image.get_width()-10,image.get_height()-10)) for image in self.standingleft]

       self.rect = pygame.Rect(x,y,height,width)
   def draw(self):
       self.topleft = (self.x,self.y)
       player_rect = rights.get_rect(center = self.rect.center) 
       player_rect.centerx += 0 # 10 is just an example
       player_rect.centery += 0 # 15 is just an example
       window.blit(heart, player_rect)
       if self.direction == "right":
           window.blit(self.right[self.anim_index],self.rect) 
           self.anim_index += 1
           if self.anim_index == len(self.right):
               self.anim_index = 0




玩家类玩家类玩家类玩家类玩家类玩家类玩家类玩家类

python html pygame
2个回答
1
投票

[所有图像都按比例缩放为相同大小

pygame.transform.scale(image,(image.get_width()-400,image.get_height()-400))

因此,您可以从一个代表性的曲面对象获得尺寸。使用列表中的第一个表面获取尺寸(rights[0]):

player_rect = rights.get_rect(center = self.rect.center)

player_rect = right[0].get_rect(center = self.rect.center)

0
投票

您没有指出错误所在的行,但是我可以猜测这是此行。

player_rect = rights.get_rect(center = self.rect.center) 

该错误是相对可解释的。 “'列表'对象没有属性'get_rect'”。表示尝试在列表上调用get_rect(),而不是像具有get_rect()的表面那样的对象。

[rights图像/表面的列表,您正在该列表上调用get_rect(),而不是在列表中的其中之一上调用它。

© www.soinside.com 2019 - 2024. All rights reserved.