pygame 关于 "get_rect ()" 方法的报错请问有大佬知道解决方法吗

def main():
...
    pause_nor_image = pygame.image.load(pause_nor).convert_alpha
    pause_rect = pause_nor_image.get_rect()
...

然后就报错了:
‘builtin_function_or_method’ object has no attribute ‘get_rect’

这是我从住程序里的截取的一小部分,不在循环里。
是因为在程序内调用的原因吗?但我在别的程序、同样的环境下运行了一遍却发现没有问题。

pygame 关于 "get_rect ()" 方法的报错请问有大佬知道解决方法吗

###
然后我就把convert_alpha去掉了,但接下来运行的这个:

    paused_rect = pause_nor_image.get_rect()
    print(paused_rect)
    paused_rect.left, pause_rect.top = width - paused_rect.width - 10, 10

最后一行报错:argument 1 must be pygame.Surface, not builtin_function_or_method
以及另一个条件也未成功触发:

    elif event.type == MOUSEBUTTONDOWN:
        if event.button == 1 and paused_rect.collidepoint(event.pos):
            print(1)
            paused = not paused

但pygame.blit方法可以运行

    screen.blit(paused_image, (width - paused_rect.width - 10, 10))

###
emmmmm 在那之后我先把所有convert_alpha去掉了,再赋了一个默认值给paused_image然后对他用get_rect()方法 = paused_image_rect,最后用这个变量替换所有paused_rect就成功了….)= 。=(
乌龙案件,我是不是应该删帖啊~

Jason990420
最佳答案
pause_nor_image = pygame.image.load(pause_nor).convert_alpha
>>> type(pause_nor_image)
<class 'builtin_function_or_method'>

可能你忘了加 ( )

pause_nor_image = pygame.image.load(pause_nor).convert_alpha()
4年前 评论
IFCll (楼主) 4年前
讨论数量: 4

可以把pause_nor发过来一下不

4年前 评论
IFCll (楼主) 4年前
Coolest (作者) 4年前
IFCll (楼主) 4年前
Jason990420

你确定你出错的前一行是这样吗?

pause_nor_image = pygame.image.load(pause_nor)

不是这样吗?

pause_nor_image = pygame.image.load

'builtin_function_or_method' object has no attribute 'get_rect'
因为在错误讯息中, 说了, 调用get_rect的是一个方法或函数
所以pause_nor_image是一个方法或函数.

Pygame will create a new Surface object from the data for image.load.

所以肯定是前一行的pygame.image.load有错

4年前 评论
IFCll (楼主) 4年前
IFCll (楼主) 4年前
Jason990420
pause_nor_image = pygame.image.load(pause_nor).convert_alpha
>>> type(pause_nor_image)
<class 'builtin_function_or_method'>

可能你忘了加 ( )

pause_nor_image = pygame.image.load(pause_nor).convert_alpha()
4年前 评论
IFCll (楼主) 4年前
Jason990420
import pygame

pygame.init()
screen = pygame.display.set_mode((468, 60))
pygame.display.set_caption('Monkey Fever')
pygame.mouse.set_visible(0)

width = 468
pause_nor_image = pygame.image.load('d:/150.jpg').convert_alpha()
paused_rect = pause_nor_image.get_rect()
# ------------------------------------
# wrong "pause_rect.top"
# ------------------------------------
paused_rect.left, paused_rect.top = width - paused_rect.width - 10, 10
4年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!