やりたいこと
for forでボタンを作った時にループ毎にボタンをグループ化させたいです。
グループ内でボタンを押すと黄色くなり、同グループのほかのボタンを押すと元にも戻る
という風にしたいです。
python3
1import tkinter as tk 2 3 4#ウィンドウの設定。サイズとタイトル 5app=tk.Tk() 6app.geometry("600x900") 7app.title("できたらいいな") 8 9flm=tk.Frame(app,bd=2) 10flm.place(x=100,y=20) 11 12#ラベルフレームを20個つくる 13Layout=[ 14 ['1','5','9','13','17'], 15 ['2','6','10','14','18'], 16 ['3','7','11','15','19'], 17 ['4','8','12','16','20'], 18 ] 19 20#defをつくるよ----------------------------------------- 21def clc1(char,TR): 22 def Q(): 23 te2=(str(char)) 24 print(te2,"_",TR+1) 25 return Q 26 27def callB(event): 28 for btnA in btnA_list: #リストから??←ここでリストを区別 29 btnA["bg"]="SystemButtonFace" 30 if event.widget["bg"] == "SystemButtonFace": 31 event.widget["bg"] = "yellow" 32 # ki色になっていたら、元に戻す。 33 else: 34 event.widget["bg"] = "SystemButtonFace" 35 36btnA_list=[] 37FRAMElist=[] 38cols=[] 39for X,row in enumerate(Layout,1): #forのあとの変数は1番目がリストの何番目かの番号2番目が内容、価 40 for Y,char in enumerate(row): 41 lblfA=tk.LabelFrame(flm,text=(char,"連鎖目")) 42 lblfA.grid(column=X,row=Y) 43 FRAMElist.append(lblfA) 44 #各々の中身を決める 45 #色数--------------------------------- 46 lblfB=tk.LabelFrame(lblfA,text="色数") 47 lblfB.pack() 48 for TR in range(5): 49 btnA=tk.Button(lblfB,text=TR+1,command= clc1(char,TR)) 50 btnA.bind("<1>",callB) 51 cols.append(TR) 52 btnA.pack(side="left") 53 btnA_list.append(btnA) 54app.mainloop() 55
試行錯誤
辞書やリストインを試しましたがよい方法がわかりませんでした。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/01/20 18:18