前提・実現したいこと
python、Tkinterを用いてボタンを押すと文字色が変わるようにしたいです。
発生している問題・エラーメッセージ
9個目のボタン(iの最後)のみ文字色が変わります。奇数回押下でオレンジに、偶数回押下で白色に戻ること自体は9個目のボタンで動作しています。lambdaを用いており、ループ終了後にアクセスが起こるので最後のボタンにのみ反映されていると考えています。
この場合は別の方法を用いるしかないのでしょうか?
該当のソースコード
import tkinter from tkinter import * # カウント変数宣言 count =[0]*9 def b_click(x): count[x] += 1 if count[x] % 2 == 0: b.config(fg="white") else: b.config(fg="orange") tki = tkinter.Tk() tki.configure(background='gray') # 背景色 tki.geometry('1300x700') # 画面サイズの設定 tki.title('ボタンのサンプル') # 画面タイトルの設定 column_data = (0, 1, 2, 0, 1, 2, 0, 1, 2) row_data = (0, 0, 0, 1, 1, 1, 2, 2, 2) for i in range(9): b = Button(tki, text='button %d' % i, height=2, width=12, font=("", 50), command=lambda n=i: b_click(n), bg="black", fg="white") # 3×3で表示 b.grid(column=column_data[i], row=row_data[i]) # ループ tki.mainloop()
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/09/03 12:15