回答編集履歴

5

 

2022/12/16 11:28

投稿

退会済みユーザー
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

 

2022/12/16 11:27

投稿

退会済みユーザー
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

 

2022/12/16 11:23

投稿

退会済みユーザー
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

  

2022/12/16 11:23

投稿

退会済みユーザー
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

  

2022/12/16 11:19

投稿

退会済みユーザー
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
- 閉じるを押すと、 root_fontcho.mainloop() が終わり、次の行に行きますが
29
+ ウィンドウを閉じると、 root_fontcho.mainloop() が終わり、次の行に行きますが
27
30
  質問文のコードだとそのまま関数が終わるため、font_chooser は None を返すことになります。
28
31
 
29
32
  したがって、