回答編集履歴

4

コード修正

2021/06/19 15:23

投稿

teamikl
teamikl

スコア8681

test CHANGED
@@ -252,7 +252,7 @@
252
252
 
253
253
  def button1_click(self, event):
254
254
 
255
- with child_dialog(frame) as dialog1:
255
+ with child_dialog(self) as dialog1:
256
256
 
257
257
  if dialog1.ShowModal() == wx.ID_OK:
258
258
 

3

追記: モーダルダイアログにする場合

2021/06/19 15:23

投稿

teamikl
teamikl

スコア8681

test CHANGED
@@ -231,3 +231,31 @@
231
231
  上のコードの場合は、親に m_listBox1 というリストボックスがないと使えません。
232
232
 
233
233
  親から小ウィンドウの情報を参照すると、他の場所でも使えるようになります。
234
+
235
+
236
+
237
+ ----
238
+
239
+ 追記2: モーダルダイアログ
240
+
241
+
242
+
243
+ - [wx.Dialog](https://wxpython.org/Phoenix/docs/html/wx.Dialog.html#wx-dialog)
244
+
245
+
246
+
247
+ ```python
248
+
249
+ # 親ウィンドウ側のクラスで
250
+
251
+
252
+
253
+ def button1_click(self, event):
254
+
255
+ with child_dialog(frame) as dialog1:
256
+
257
+ if dialog1.ShowModal() == wx.ID_OK:
258
+
259
+ self.m_listBox1.Append(dialog1.text1.GetValue())
260
+
261
+ ```

2

追記

2021/06/19 15:16

投稿

teamikl
teamikl

スコア8681

test CHANGED
@@ -165,3 +165,69 @@
165
165
  app.MainLoop()
166
166
 
167
167
  ```
168
+
169
+
170
+
171
+
172
+
173
+ ----
174
+
175
+ 追記
176
+
177
+
178
+
179
+ 取り急ぎ解決策。Append の部分は用途に合わせて下さい。追加か変更。
180
+
181
+ SetItems の場合は、リストを渡す必要があります。
182
+
183
+ ```python
184
+
185
+
186
+
187
+ def done(self, event):
188
+
189
+ self.GetParent().m_listBox1.Append(self.text1.GetValue())
190
+
191
+ self.Destroy()
192
+
193
+ self.Close()
194
+
195
+
196
+
197
+ ```
198
+
199
+
200
+
201
+
202
+
203
+
204
+
205
+ 問題点:
206
+
207
+
208
+
209
+ - parent_project は、インスタンスではなくクラスなので、
210
+
211
+  クラス自身は、インスタンス化しないとウィジェット等の実態を持ちません。
212
+
213
+  インスタンスを参照する必要があります。
214
+
215
+  ⇛ 親子関係がある場合は、Parent や GetParent() で参照できます。
216
+
217
+ - リストボックスの属性 list1 -> m_listBox1
218
+
219
+ - リストボックスのメソッド SetItems -> Append
220
+
221
+
222
+
223
+
224
+
225
+ モーダルダイアログの場合は、親ウィンドウ側から小ウィンドウを参照したほうが良いです。
226
+
227
+
228
+
229
+ 理由: クラスの再利用性の為。小ウィンドウから親を参照すると
230
+
231
+ 上のコードの場合は、親に m_listBox1 というリストボックスがないと使えません。
232
+
233
+ 親から小ウィンドウの情報を参照すると、他の場所でも使えるようになります。

1

補足

2021/06/19 14:54

投稿

teamikl
teamikl

スコア8681

test CHANGED
@@ -27,6 +27,8 @@
27
27
  もし記載ミスでなく、そのままのコードで動いてるのだとすれば、一般的な使い方ではないので、
28
28
 
29
29
  現状のコードがどうなっているのかが、第三者視点で把握できません。
30
+
31
+ (中略されてる場所、もしくは省かれた箇所に問題解決に必要な情報があります)
30
32
 
31
33
 
32
34