Задать вопрос
  • Ошибка: TypeError: argument 1 must be pygame.Surface, not function. Как исправить?

    phaggi
    @phaggi Куратор тега Python
    лужу, паяю, ЭВМы починяю
    Ростислав, там написано, что аргумент gpic в строке win.blit(gpic, (gx, gy))
    должен быть определенным объектом, а не функцией.
    Полагаю, метод gpic у объекта grass с точки зрения win.blit выглядит как функция.
    gpic = grass.pic
    Ты создаешь ссылку с именем gpic на метод класса grass.

    (И, кстати, если мы посмотрим на этот метод, что он возвращает? Видимо, None, потому что return в нем нет)

    Надо правильно создать класс и объект класса, т.е.
    class Grass:
      def __init__(self):
        self.X = 0
        self.Y = 195
    
      def pic(self):
        return pygame.image.load('Imaga\\grass.png')
    
    
    gpic = Grass()

    А потом обращаться к его методу
    win.blit(gpic.pic(), (gpic.X, gpic.Y))

    Вообще, класс получается довольно пустой и бестолковый, и не уверен, что правильный - но что-то такое должно быть, может более сложное (потому что константы self.X и self.Y, захардкорженные внутри конструктора класса - ну, не знаю...)

    P.s. признаться, я не большой мастер, возможно меня поправят старшие товарищи.
    Ответ написан
    1 комментарий