これは私の最初の Python プログラムであり、if ステートメントは正しいと思います。正しいかどうかはわかりません。私がやりたいことは、Tkinter ボタンがクリックされたときに、どの画像がボタンに表示されているかを確認するために呼び出される関数が必要であり、それに応じてその画像を変更することです。
関数のコードは次のとおりです。
def update_binary_text(first,second):
if buttonList[first][second]["image"] == photo:
buttonList[first][second]["image"] = photo1
コマンドを使用した for ループ [ボタンの 2d リスト] は次のとおりです。
for i in range (0,number):
buttonList.append([])
for j in range(0,number):
print(i,j)
buttonList[i].append(Button(game, borderwidth=0,highlightthickness=0, image=photo,command = lambda i=i, j=j: update_binary_text(i,j)))
buttonList[i][j].grid(row=i*20,column=j*20)
問題は、これを実行すると正常に開きますが、すべてのボタンをクリックしても何も起こりません。if文を抜き出して代入すれば動くのですが、どの画像が先に表示されるかを確認する必要があります。
誰にも解決策がありますか?
別の問題に遭遇しました。以前に受け取ったソリューションは問題なく機能し、画像を変更しましたが、最初のクリックのみでした. その後、再び変わることはありません。
コードは次のとおりです。
def update_binary_text(first,second):
#print("Called")
if buttonList[first][second].image == photo:
buttonList[first][second]["image"] = photo0
elif buttonList[first][second].image == photo0:
buttonList[first][second]["image"] = photo1
何が起こるかというと、ボタンを初めてクリックすると、空白のボタンから画像のあるボタンに変わり、もう一度クリックすると画像が変わるはずですが、そうではありません。誰かが見たい場合は、ここに初期化するステートメントがありますphoto
、photo0
、およびphoto1
:
photo = PhotoImage(file ="blank.gif")
photo0 = PhotoImage(file="0.gif")
photo1 = PhotoImage(file="1.gif")