所以我试图建立一个小型的tic tac toe游戏,我用kivy来实现它。我遇到的问题是我已经制作了一个9个按钮(3x3)的网格,现在我正在绑定它们(或尝试)。
我在我的类BoardGrid的__init__
方法中完成所有这些操作,因为只有在程序第一次运行时才会发生这种情况。
class BoardGrid(GridLayout):
def __init__(self, **kwargs):
super(BoardGrid, self).__init__(**kwargs)
self.board = []
self.buttons = []
for i in range(9):
self.board.append('')
self.buttons.append(Button(text=self.board[i]))
self.buttons[i].bind(on_press=BoardGrid.callback(????, i))
self.add_widget(self.buttons[i])
def callback(self, btn):
print(btn)
问题是on_press需要一个它将指向的函数,如果我让BoardGrid.callback不带参数,这可以正常工作,但是因为我希望它知道我想要发送哪个按钮。这导致了一个问题,我需要将BoardGrid传递给我在类中创建的回调函数吗?
也许我在这里从错误的角度攻击这个,我想我可以将我的按钮绑定到回调函数中的特定输入,但这可能是不可能的。
非常感谢有关如何使绑定工作的任何建议
编辑:似乎现在正在工作,对不起,我无法回复所有人,这是我的第一篇文章,我似乎很难理解它,但是嘿嘿。非常感谢你的回复!答案 0 :(得分:1)
from functools import partial
class BoardGrid(GridLayout):
def __init__(self, **kwargs):
...
self.buttons[i].bind(on_press=partial(self.callback, i))
...
def callback(self, btn):
print(btn)