[英]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
)來存儲按鈕並使用row
和col
來訪問它們。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.