Объект Button не имеет атрибута обратного вызова Python - PullRequest
0 голосов
/ 28 сентября 2018

Я хочу иметь функцию обратного вызова для btn1, чтобы изменить player1.center_y и взаимодействовать с моей программой в целом (изменение значений в Gameclass).

Однако я получаю ошибку

' Кнопка' объект не имеет атрибута 'player1 ' при нажатии кнопки.Это потому, что класс экземпляра неправильный или что-то в этом роде? Я новичок в ООП.

вот соответствующий код:

class Gameclass(Widget):
    def on_touch_move(self, touch):
        if touch.x < self.width / 3:
            self.player1.center_y = touch.y
        if touch.x > self.width - self.width / 3:
            self.player2.center_y = touch.y

    def callback(self):
            self.player1.center_y = 22
            self.player2.center_y = 250

btn1 = Button(text='click me')
btn1.bind(on_press=Gameclass.callback)

1 Ответ

0 голосов
/ 29 сентября 2018

Мой комментарий может быть трудным для понимания, поэтому вот пример:

class Gameclass(Widget):
    def on_touch_move(self, touch):
        if touch.x < self.width / 3:
            self.player1.center_y = touch.y
        if touch.x > self.width - self.width / 3:
            self.player2.center_y = touch.y

    def callback(self, btn_instance):
            self.player1.center_y = 22
            self.player2.center_y = 250

btn1 = Button(text='click me')
gc = Gameclass()
btn1.bind(on_press=gc.callback)

Обратите внимание, что вы, вероятно, создаете экземпляр Gameclass где-то еще в вашем коде, и этот экземпляр следует использовать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...