回答編集履歴

2

誤字訂正 小 → 子

2022/03/09 11:36

投稿

teamikl
teamikl

スコア8664

test CHANGED
@@ -14,7 +14,7 @@
14
14
  > 孫画面に閉じるボタンを作成し孫画面と子画面を同時に閉じたい。
15
15
 
16
16
  ウィジェットの親子関係の整理が必要です。
17
- 親ウィジェットを破棄すると、その親に所属するウィジェットは自動的に破棄されるようになってます。
17
+ 親ウィジェットを破棄すると、その親に所属するウィジェットは自動的に破棄されるようになってます。
18
18
  正しく「孫画面」を構成すると、「子画面」を閉じると自動的に「孫画面」も閉じられます。
19
19
 
20
20
  解決策:

1

説明補足

2022/03/09 06:28

投稿

teamikl
teamikl

スコア8664

test CHANGED
@@ -7,7 +7,7 @@
7
7
  ウィジェットの親子関係が正しく「孫ウィンドウ」になってません。
8
8
 
9
9
  Toplevel 生成時の第一引数に親ウィンドウを指定する必要があります。
10
- 省略時は親ウィンドウとなる為、「子ウィンドウ」は意図通りですが、
10
+ 省略時は大元の親ウィンドウとなる為、「子ウィンドウ」は意図通りですが、
11
11
  「孫ウィンドウ」と思われているウィンドウは、実際は「子ウィンドウ2」になってます。
12
12
 
13
13
 
@@ -18,11 +18,12 @@
18
18
  正しく「孫画面」を構成すると、「子画面」を閉じると自動的に「孫画面」も閉じられます。
19
19
 
20
20
  解決策:
21
- - Toplevel の第一引数に親ウィンドウを指定する
21
+ - Toplevel の第一引数に親ウィンドウを指定する(正しくウィジェットの親子関係を構築)
22
22
  - 「孫画面」の閉じるボタンで、「子画面」を閉じる
23
23
 
24
24
  実装方法は、
25
- クラスの設計上、CorrectWindowクラスからSubWindow を直接参照するのは好ましくない為、
25
+ クラスの設計上、CorrectWindowクラスからSubWindow を直接参照するのは好ましくない為、
26
+ (理由: SubWindow への依存が出来てしまい、CorrectWindowクラスを単体で使い難くなる)
26
27
  孫画面を閉じるボタンを押したときに generate_event でイベント生成し、
27
28
  子画面側で、孫画面のイベント時にウィンドウを閉じるように設定します。
28
29
 
@@ -43,5 +44,4 @@
43
44
  win.bind("<<Close>>", lambda e: root.destroy())
44
45
 
45
46
  root.mainloop()
46
-
47
47
  ```