わからないこと
下記スクリプトで作成した一番上層のLabelのテキスト内容を後で外から関数で変更したいです。
しかしループで作成したWidgetへのアクセスの仕方がわかりません。
print(c)で出てくる.!Main.!frame.!LabelFrameみたいなものはアクセスするためには使えない文字列なのでしょうか。
下記のスクリプトは私が作りたいコードを簡素化したものなので、Label内のTextに特に意味はありません。
本当はRedoボタンを押すたびにExcelファイルをダイアログから選びなおしその中の情報から計算をして上書きをするという仕組みを考えています。
スクリプト
python
1import tkinter as tk 2import tkinter.ttk as ttk 3 4class Main(tk.Frame): 5 def __init__(self, master): 6 super().__init__(master) 7 8 button = tk.Button(self, text='re-do', command=re_set) 9 button.pack() 10 frame = tk.LabelFrame(self, text='test', bg='#fff', fg='Blue') 11 frame.pack(pady=10, anchor=tk.NW) 12 13 test_label = {'test_txt':'abc', 'another_txt':'xyz', 'the_other_xtx':'jkl'} 14 for i in test_label: 15 a = tk.LabelFrame(frame, text=i) 16 b = tk.Label(a, text=test_label[i]) 17 [widget.pack(side=tk.LEFT) for widget in (a, b)] 18 19 20def re_set(): 21 test_label = {'test_txt': 'gad', 'another_txt': 'ggg', 'the_other_xtx': 'zzz'} 22 for i in test_label: 23 Main.b.text.set(test_label[i]) 24 [widget.pack(side=tk.LEFT) for widget in (b)] 25 26def main(): 27 root = tk.Tk() 28 root.geometry("500x500") 29 win = Main(root) 30 win.pack(fill='both', expand='YES') 31 root.mainloop() 32 33 34if __name__ == '__main__': 35 main() 36
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/05/29 00:45
2020/05/29 01:29