回答編集履歴

1

補足を追加

2019/03/01 00:26

投稿

magichan
magichan

スコア15898

test CHANGED
@@ -3,6 +3,8 @@
3
3
 
4
4
 
5
5
  単純にグローバルスコープに変更する事で解決するかとは思うのですが・・・、あまり薦められる方法ではありません。
6
+
7
+ [https://teratail.com/questions/129515](https://teratail.com/questions/129515)
6
8
 
7
9
 
8
10
 
@@ -33,3 +35,63 @@
33
35
  ```
34
36
 
35
37
  とWidgetの名前からListbox Widgetを取得します。
38
+
39
+
40
+
41
+
42
+
43
+ ---
44
+
45
+
46
+
47
+ 【追記】
48
+
49
+
50
+
51
+ 動作させてみたところ他にも同様のエラーの箇所があるようです。
52
+
53
+ 下記の箇所で同様に``hou_entry``と``minute`` をそれぞれ参照できないとのエラーとなります。
54
+
55
+ こちらに関しては上と違いWidgetのOwnerが別Windowなので一工夫が必用です。
56
+
57
+
58
+
59
+ まず、現状ボタンを生成する際に
60
+
61
+ ```Python
62
+
63
+ okb = Button(adding,text="Ok",command=add_ok)
64
+
65
+ ```
66
+
67
+ としている箇所を
68
+
69
+ ```Python
70
+
71
+ okb = Button(adding,text="Ok",command=lambda : add_ok(adding))
72
+
73
+ ```
74
+
75
+ のように変更し、``lambda``を使って ``add_ok()``関数の引数としてOwnerとなるWindowを渡すように修正してください。
76
+
77
+
78
+
79
+ あとは上と同様に
80
+
81
+
82
+
83
+ ```Python
84
+
85
+ def add_ok(owner):
86
+
87
+ hour_entry = owner.children['hour_entry'] #<- Widget名は適当
88
+
89
+ minute = owner.children['minute_entry'] #<- Widget名は適当
90
+
91
+ # 以下省略
92
+
93
+ ```
94
+
95
+
96
+
97
+ のようにすることで、同じWindowにある Entry Widget を取得できるようになるかと思います。