前提・実現したいこと
Python 3
実行ボタンを押す事で、複数自動生成された他のボタン背景色を一括で変更する(デフォルト色に戻す)仕組みを作りたい。
もしくは操作GUIをリセットする方法が知りたい。もしくは全てのボタンを一度削除して描画する方法が知りたい。手段がどうであれ、目的変化したボタンの背景色を戻す事。
■質問内容■
<作ったもの>
・配列を元にボタンを複数自動生成
・自動生成されたボタンを押すとそのボタンの色が変わる
・実行ボタンを押す事で、押されたボタンのテキストを配列として出力する
<質問>
何度も同じ処理を繰り返したいので、実行ボタンを押下した時に、背景色が変わったボタンの背景色をデフォルトに戻す機能を追加する方法が知りたいです。
発生している問題・エラーメッセージ
・背景色を別のボタンから変更する方法は分かりましたが、自動生成された一番最後のボタンにしか適応されません。
該当のソースコード
Python3
1 2import tkinter as tk 3import pyperclip 4 5root = tk.Tk() 6root.geometry("200x800+1700+400") 7root.title('タグ取得') 8 9#配列 10list = ["AAA", "BBB", "CCC", "DDD"] 11mlen = len(list) #要素数 12result = [] #最終出力用の配列箱 13 14#選択した配列の結果を出力する実行ボタン 15def getlist(event): 16 # event.widget.config(bg="pink") 17 print(result) 18 joined_result = ', '.join(result) #配列をカンマで区切りつつ連結 19 pyperclip.copy(joined_result) #クリップボードにコピー 20 result.clear() #配列を空にする 21 btn.config(bg='gray') ←●ここが質問ポイント。 22 23#ボタンリストを表示させる 24def button_func(event): 25 event.widget.config(bg="red") 26 print(event.widget.cget("text") + "を選択しました") 27 result.append(event.widget.cget("text")) 28 29#結果を取得するボタンを配置 30btn_get = tk.Button(root, text = "■作成■", font=("", 30) ) 31btn_get.pack() 32 33# ボタンクリック時のイベント設定 34btn_get.bind("<ButtonPress>", getlist) 35print(result) 36 37#一覧のボタンを配置 38for i in range(mlen) : 39 btn_name = list[i] # ボタンの名前(テキスト)を設定 40 41 # ボタンのインスタンス作成 42 btn = tk.Button(root, text = btn_name, font=("", 20)) 43 44 btn.pack() # ボタンを配置 45 46 # ボタンクリック時のイベント設定 47 btn.bind("<ButtonPress>", button_func) 48 49root.mainloop()
試したこと
実行ボタンを押した時に、
・配列ボタンの背景色を変える
・配列ボタンをすべて削除する
をやろうとしましたが、一番最後に作成されたボタンにしか適応できませんでした。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。