【问题标题】:Button won't change value in tkinter按钮不会改变 tkinter 中的值
【发布时间】:2021-01-12 18:34:19
【问题描述】:

我正在尝试在 Python 中使用 TKinter 制作井字游戏。我想创建一个函数,它根据我在其目录中找到的__str__() 属性更改按钮值及其在我的另一个二维数组中的相应位置。这是我的功能:

    def changed_based_on_id(self,btn):
        if btn.__str__() == '.!button' and btn['text'] == '':
            self.ld['text'] = 'X' if self.p1turn else 'O'
            self.board[0][0] = 'X' if self.p1turn else 'O'
            self.turn()
        elif btn.__str__() == '.!button2' and btn['text'] == '': 
            self.tc['text'] = 'X' if self.p1turn else 'O'
            self.board[0][1] = 'X' if self.p1turn else 'O'
            self.turn()
        elif btn.__str__() == '.!button3' and btn['text'] == '': 
            self.rd['text'] = 'X' if self.p1turn else 'O'
            self.board[0][2] = 'X' if self.p1turn else 'O'
            self.turn()
        elif btn.__str__() == '.!button4' and btn['text'] == '':
            self.cl['text'] == 'X' if self.p1turn else 'O'
            self.board[1][0] = 'X' if self.p1turn else 'O'
            self.turn()
        elif btn.__str__() == '.!button5' and btn['text'] == '':
            self.c['text'] == 'X' if self.p1turn else 'O'
            self.board[1][1] = 'X' if self.p1turn else 'O'
            self.turn()
        elif btn.__str__() == '.!button6' and btn['text'] == '':
            self.cr['text'] == 'X' if self.p1turn else 'O'
            self.board[1][2] = 'X' if self.p1turn else 'O'
            self.turn()
        elif btn.__str__() == '.!button7' and btn['text'] == '':
            self.bld['text'] == 'X' if self.p1turn else 'O'
            self.board[2][0] = 'X' if self.p1turn else 'O'
            self.turn()
        elif btn.__str__() == '.!button8' and btn['text'] == '':
            self.bc['text'] == 'X' if self.p1turn else 'O'
            self.board[2][1] = 'X' if self.p1turn else 'O'
            self.turn()
        elif btn.__str__() == '.!button9' and btn['text'] == '':
            self.brd['text'] == 'X' if self.p1turn else 'O'
            self.board[2][2] = 'X' if self.p1turn else 'O'
            self.turn()
            print(self.board)
        else:
            pass

当我尝试按下前三个以外的按钮时,按钮上的值不会改变,但二维数组位置会改变。我做错了什么吗?好像没找到。

提前致谢!

【问题讨论】:

    标签: python tkinter tic-tac-toe


    【解决方案1】:

    我在文档中找到了一个名为 config() 的函数,您可以应用它。它对我有用!

    【讨论】:

      【解决方案2】:

      对于前 3 个以外的按钮,您使用了==

      self.cl['text'] == 'X' if self.p1turn else 'O'
      

      应该改为=

      self.cl['text'] = 'X' if self.p1turn else 'O'
      

      请注意,使用变量的内部名称不是一个好的设计。最好使用二维列表(如self.board)来存储按钮并使用rowcol 来访问它们。

      【讨论】:

      • 哦,我怎么没看到?谢谢!不敢相信我没有看到。我的董事会是这样定位的:
      • ld|tc|rd 是第一行,然后是 lc|c|rc,然后是 bld|bc|brc
      猜你喜欢
      • 2016-09-01
      • 2015-06-15
      • 1970-01-01
      • 1970-01-01
      • 2014-09-14
      • 1970-01-01
      • 2014-03-16
      • 1970-01-01
      • 2014-05-15
      相关资源
      最近更新 更多