回答編集履歴
4
コード修正
test
CHANGED
@@ -252,7 +252,7 @@
|
|
252
252
|
|
253
253
|
def button1_click(self, event):
|
254
254
|
|
255
|
-
with child_dialog(f
|
255
|
+
with child_dialog(self) as dialog1:
|
256
256
|
|
257
257
|
if dialog1.ShowModal() == wx.ID_OK:
|
258
258
|
|
3
追記: モーダルダイアログにする場合
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
追記
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
補足
test
CHANGED
@@ -27,6 +27,8 @@
|
|
27
27
|
もし記載ミスでなく、そのままのコードで動いてるのだとすれば、一般的な使い方ではないので、
|
28
28
|
|
29
29
|
現状のコードがどうなっているのかが、第三者視点で把握できません。
|
30
|
+
|
31
|
+
(中略されてる場所、もしくは省かれた箇所に問題解決に必要な情報があります)
|
30
32
|
|
31
33
|
|
32
34
|
|