回答編集履歴
5
test
CHANGED
@@ -38,8 +38,7 @@
|
|
38
38
|
|
39
39
|
|
40
40
|
質問のコードでは、non local によって、font_a は 関数内関数 fontget と 親関数 font_chooser の間で共有できています。
|
41
|
-
しかしそもそも font_chooser が font_aを返していないから期待した動作になっていないのだと考えら
|
41
|
+
しかしそもそも font_chooser が font_aを返していないから期待した動作になっていないのだと考えられます。
|
42
|
-
れます。
|
43
42
|
|
44
43
|
よって、
|
45
44
|
root_fontcho.mainloop()
|
4
test
CHANGED
@@ -36,11 +36,16 @@
|
|
36
36
|
ウィンドウを閉じると、 root_fontcho.mainloop() が終わり、次の行に行きますが
|
37
37
|
質問文のコードだとそのまま関数が終わるため、font_chooser は None を返すことになります。
|
38
38
|
|
39
|
+
|
40
|
+
質問のコードでは、non local によって、font_a は 関数内関数 fontget と 親関数 font_chooser の間で共有できています。
|
41
|
+
しかしそもそも font_chooser が font_aを返していないから期待した動作になっていないのだと考えら
|
42
|
+
れます。
|
43
|
+
|
39
|
-
|
44
|
+
よって、
|
40
45
|
root_fontcho.mainloop()
|
41
46
|
の下に
|
42
47
|
return font_a
|
43
48
|
を置けば、一応期待通りの動作になるはずです。
|
44
|
-
|
49
|
+
|
45
50
|
※ 実際のアプリケーションでは font_chooser はサブのダイアログの扱いでメインのウィンドウは他にあるでしょうから、これがベストプラクティスかどうかは不明です。
|
46
51
|
|
3
test
CHANGED
@@ -29,7 +29,7 @@
|
|
29
29
|
root_fontcho.destroy()
|
30
30
|
return font_a
|
31
31
|
```
|
32
|
-
また、ウィンドウ閉じるまで、下記より下は実行されません。
|
32
|
+
また、ウィンドウを閉じるまで、下記より下は実行されません。
|
33
33
|
```py
|
34
34
|
root_fontcho.mainloop()
|
35
35
|
```
|
2
test
CHANGED
@@ -7,10 +7,10 @@
|
|
7
7
|
.....
|
8
8
|
...
|
9
9
|
print('defの外:' + font_a)
|
10
|
-
# if not font_a == '':
|
10
|
+
# if not font_a == '': # 削除
|
11
|
-
# print('if内:' + font_a)
|
11
|
+
# print('if内:' + font_a) # 削除
|
12
|
-
# root_fontcho.destroy()
|
12
|
+
# root_fontcho.destroy() # 削除
|
13
|
-
# return font_a
|
13
|
+
# return font_a # 削除
|
14
14
|
|
15
15
|
root_fontcho.mainloop()
|
16
16
|
return font_a # 追加
|
@@ -22,8 +22,15 @@
|
|
22
22
|
|
23
23
|
---
|
24
24
|
##### 補足
|
25
|
-
|
25
|
+
下記の部分は起動した直後の1回しか実行(比較)されません。
|
26
|
+
```py
|
27
|
+
if not font_a == '':
|
28
|
+
print('if内:' + font_a)
|
29
|
+
root_fontcho.destroy()
|
30
|
+
return font_a
|
26
31
|
```
|
32
|
+
また、ウィンドウ閉じるまで、下記より下は実行されません。
|
33
|
+
```py
|
27
34
|
root_fontcho.mainloop()
|
28
35
|
```
|
29
36
|
ウィンドウを閉じると、 root_fontcho.mainloop() が終わり、次の行に行きますが
|
1
test
CHANGED
@@ -2,7 +2,10 @@
|
|
2
2
|
|
3
3
|
```python
|
4
4
|
def font_chooser():
|
5
|
+
........
|
5
6
|
略
|
7
|
+
.....
|
8
|
+
...
|
6
9
|
print('defの外:' + font_a)
|
7
10
|
# if not font_a == '':
|
8
11
|
# print('if内:' + font_a)
|
@@ -19,11 +22,11 @@
|
|
19
22
|
|
20
23
|
---
|
21
24
|
##### 補足
|
22
|
-
閉じる
|
25
|
+
ウィンドウ閉じるまで、下記より下は実行されません。
|
23
26
|
```
|
24
27
|
root_fontcho.mainloop()
|
25
28
|
```
|
26
|
-
閉じる
|
29
|
+
ウィンドウを閉じると、 root_fontcho.mainloop() が終わり、次の行に行きますが
|
27
30
|
質問文のコードだとそのまま関数が終わるため、font_chooser は None を返すことになります。
|
28
31
|
|
29
32
|
したがって、
|