簡體   English   中英

按鈕不會改變 tkinter 中的值

[英]Button won't change value in tkinter

我正在嘗試在 Python 中使用 TKinter 制作井字游戲。 我想制作一個 function ,它根據我在其目錄中找到的__str__()屬性在我的另一個二維數組中更改按鈕值及其各自的 position。 這是我的 function:

    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

當我嘗試按下前三個以外的按鈕時,按鈕上的值不會改變,但二維數組 position 會改變。 我做錯了什么嗎? 我似乎找不到它。

提前致謝!

我在文檔中找到了一個名為config()的 function,您可以應用它。 它對我有用!

對於前 3 個以外的按鈕,您使用==在:

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

它應該是=

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

請注意,使用變量的內部名稱不是一個好的設計。 最好使用 2D 列表(如self.board )來存儲按鈕並使用rowcol來訪問它們。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM