我想为btn1提供回调函数,以更改player1.center_y并与我的程序进行一般交互(在Gameclass中更改值)。
但是我得到了错误
单击按钮时,' Button'对象没有属性'player1 '。 是因为实例类有错误还是什么?我对OOP有点陌生。
这是相关代码:
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)
答案 0 :(得分:0)
我的评论可能很难理解,所以这里有个例子:
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
的实例,并且应该使用该实例。