【发布时间】:2015-12-02 04:40:28
【问题描述】:
我正在创建一个井字游戏按钮板。单击每个按钮时,应交替切换为 X 或 O。我已经在 for 循环中创建了按钮,如果可能的话,我希望避免单独初始化它们。 我尝试使用 lambda 将按钮传递给函数,并尝试通过调用按钮 self.bttn 来消除命令中的参数问题(因为这一切都发生在我修改后的 Frame 类中)。然而,在这两种情况下,我都遇到了这样一个问题,即无论我点击 9 个按钮中的哪一个,由 for 循环创建的最终按钮都会响应。
def __build_board(self):
""" Creates tic-tac-toe board of 9 blank buttons. """
for row_num in range(3):
for col_num in range(3):
self.bttn = Button(self, text = " ", command = self.__change_button)
self.bttn.grid(row = row_num + 1, column = col_num, sticky = W)
这就是我尝试使用 self.bttn 的方式。 self.__change_button 只是将 self.bttn 中的文本切换为 X 或 O。 这就是我尝试使用 lambda 的方式...
def __build_board(self):
""" Creates tic-tac-toe board of 9 blank buttons. """
for row_num in range(3):
for col_num in range(3):
bttn = Button(self, text = " ", command = lambda: self.__change_button(bttn))
bttn.grid(row = row_num + 1, column = col_num, sticky = W)
我想我明白为什么这些方法行不通了。看起来,我已经命令所有按钮更改最后一个按钮的文本,但我不知道如何让它们按照我想要的方式更改自己的文本。任何帮助将不胜感激。
【问题讨论】:
标签: python