TypeError:参数1必须是pygame.Surface,而不是方法

时间:2016-12-29 14:29:00

标签: python class methods pygame typeerror

我是pygame的新手,并尝试创建一个简单的程序,允许我使用键盘在屏幕上移动图像。当我尝试使用外观方法在屏幕上获取图像时,我在标题中收到错误。我有一个工作版本,我没有使用类编写,但想了解类,所以我可以在将来实现它们。

这是我的代码:

import pygame, sys
from pygame.locals import *
pygame.init()

FPS = 30
fpsClock = pygame.time.Clock()



DISPLAYSURF = pygame.display.set_mode((600, 500), 0, 32)
pygame.display.set_caption('Animation')



class Hero():
    def __init__(self):
        posx = 10
        posy = 10


    def appearance():
        return pygame.image.load('C:\\Users\\admin\\Desktop\\right.png')

    def move_right(x):
        posx += 10


    def move_left(x):
        posx -= 10


    def move_up(y):
        posy -= 10


    def move_down(y):
        posy += 10


new_hero = Hero() #create a Hero

while True:

    item = new_hero.appearance
    DISPLAYSURF.blit(item, (posx, posy)) #error
    for event in pygame.event.get():
        if event.type == QUIT:
            pygame.quit()
            sys.exit()

    pygame.display.update()
    fpsClock.tick(FPS)

2 个答案:

答案 0 :(得分:1)

您正在分配方法,而不是返回值:

item = new_hero.appearance

你应该做的是:

item = new_hero.appearance()

答案 1 :(得分:1)

您的item是对new_hero.appearance方法的引用。为了调用该方法并获取它应返回的表面,您需要使用()

item = new_hero.appearance()
# Here -------------------^