質問編集履歴

5

コード修正

2021/06/19 12:31

投稿

Lups20
Lups20

スコア2

test CHANGED
File without changes
test CHANGED
@@ -60,6 +60,8 @@
60
60
 
61
61
  イメージとしては以下のようなものになります。
62
62
 
63
+ 上記の考えてみたこと(親ウィンドウのボタンを押すなどのイベントを起こせば、子の値を受けて表示することはできました。)の部分についてはコメントアウトしています。
64
+
63
65
 
64
66
 
65
67
  ```
@@ -72,7 +74,7 @@
72
74
 
73
75
  class child_dialog(wx.Dialog):
74
76
 
75
- list1 = []
77
+ # list1 = []
76
78
 
77
79
 
78
80
 
@@ -144,7 +146,7 @@
144
146
 
145
147
  # parent_project.list1 = self.list1
146
148
 
147
- parent_project.listbox.SetItems(self.list1)
149
+ parent_project.listbox.SetItems(self.list1) # エラーが出る場所。ここで親リストに表示させたい。
148
150
 
149
151
  self.Destroy()
150
152
 
@@ -164,7 +166,7 @@
164
166
 
165
167
  class parent_project(wx.Frame):
166
168
 
167
- list1 = []
169
+ # list1 = []
168
170
 
169
171
 
170
172
 

4

文字修正

2021/06/19 12:31

投稿

Lups20
Lups20

スコア2

test CHANGED
File without changes
test CHANGED
@@ -58,7 +58,7 @@
58
58
 
59
59
  ###実行用ソース
60
60
 
61
- エラーが出るソースという訳ではないですが、イメージとしては以下のようなものになります。
61
+ イメージとしては以下のようなものになります。
62
62
 
63
63
 
64
64
 

3

コード追加

2021/06/19 12:28

投稿

Lups20
Lups20

スコア2

test CHANGED
File without changes
test CHANGED
@@ -48,36 +48,6 @@
48
48
 
49
49
  しかし、私がしたいことは、わざわざ親ウィンドウでボタンを押さずとも子ウィンドウのボタンを押せば親ウィンドウのリスト(self.listbox)に表示させるようにしたいのです。
50
50
 
51
- 当然ながら以下のようにやってみても、Parent_Projectにはlistboxというメソッドは存在しません。となります。。
52
-
53
- ```
54
-
55
- class Child_Project():
56
-
57
- list1=[]
58
-
59
- def __init__(self, parent):
60
-
61
- (中略)
62
-
63
-
64
-
65
- def button1(self, event):
66
-
67
- Parent_Project.list1=self.list1
68
-
69
- Parent_Project.listbox.SetItems(self.list1) # ←エラーになる。
70
-
71
-
72
-
73
- class Parent_Project():
74
-
75
- (中略)
76
-
77
-
78
-
79
- ```
80
-
81
51
 
82
52
 
83
53
  調べてみましたがよくわからず…行き詰ってしまいました。
@@ -86,6 +56,202 @@
86
56
 
87
57
 
88
58
 
59
+ ###実行用ソース
60
+
61
+ エラーが出るソースという訳ではないですが、イメージとしては以下のようなものになります。
62
+
63
+
64
+
65
+ ```
66
+
67
+ import wx
68
+
69
+
70
+
71
+
72
+
73
+ class child_dialog(wx.Dialog):
74
+
75
+ list1 = []
76
+
77
+
78
+
79
+ def __init__(self, parent):
80
+
81
+ wx.Dialog.__init__(self, parent, id=wx.ID_ANY, title=wx.EmptyString, pos=wx.DefaultPosition,
82
+
83
+ size=wx.Size(200, 200), style=wx.DEFAULT_DIALOG_STYLE)
84
+
85
+
86
+
87
+ self.SetSizeHints(wx.DefaultSize, wx.DefaultSize)
88
+
89
+
90
+
91
+ bSizer2 = wx.BoxSizer(wx.VERTICAL)
92
+
93
+ bSizer3 = wx.BoxSizer(wx.HORIZONTAL)
94
+
95
+ bSizer4 = wx.BoxSizer(wx.HORIZONTAL)
96
+
97
+
98
+
99
+ self.text1 = wx.TextCtrl(self, wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.DefaultSize, 0)
100
+
101
+ bSizer3.Add(self.text1, 0, wx.ALL, 5)
102
+
103
+ bSizer2.Add(bSizer3, 1, wx.EXPAND, 5)
104
+
105
+ self.done_button = wx.Button(self, wx.ID_ANY, u"Done", wx.DefaultPosition, wx.DefaultSize, 0)
106
+
107
+ bSizer4.Add(self.done_button, 0, wx.ALL, 5)
108
+
109
+ self.cancel_button = wx.Button(self, wx.ID_ANY, u"Cancel", wx.DefaultPosition, wx.DefaultSize, 0)
110
+
111
+ bSizer4.Add(self.cancel_button, 0, wx.ALL, 5)
112
+
113
+ bSizer2.Add(bSizer4, 0, wx.ALIGN_RIGHT, 5)
114
+
115
+
116
+
117
+ self.SetSizer(bSizer2)
118
+
119
+ self.Layout()
120
+
121
+ self.Centre(wx.BOTH)
122
+
123
+ self.Show()
124
+
125
+
126
+
127
+ # Connect Events
128
+
129
+ self.done_button.Bind(wx.EVT_BUTTON, self.done)
130
+
131
+ self.cancel_button.Bind(wx.EVT_BUTTON, self.cancel)
132
+
133
+
134
+
135
+ def __del__(self):
136
+
137
+ pass
138
+
139
+
140
+
141
+ def done(self, event):
142
+
143
+ # self.list1 = self.text1.GetValue()
144
+
145
+ # parent_project.list1 = self.list1
146
+
147
+ parent_project.listbox.SetItems(self.list1)
148
+
149
+ self.Destroy()
150
+
151
+ self.Close()
152
+
153
+
154
+
155
+ def cancel(self, event):
156
+
157
+ self.Destroy()
158
+
159
+ self.Close()
160
+
161
+
162
+
163
+
164
+
165
+ class parent_project(wx.Frame):
166
+
167
+ list1 = []
168
+
169
+
170
+
171
+ def __init__(self, parent):
172
+
173
+ wx.Frame.__init__(self, parent, id=wx.ID_ANY, title=wx.EmptyString, pos=wx.DefaultPosition,
174
+
175
+ size=wx.Size(300, 300), style=wx.DEFAULT_FRAME_STYLE | wx.TAB_TRAVERSAL)
176
+
177
+
178
+
179
+ self.SetSizeHints(wx.DefaultSize, wx.DefaultSize)
180
+
181
+
182
+
183
+ bSizer1 = wx.BoxSizer(wx.VERTICAL)
184
+
185
+ m_listBox1Choices = []
186
+
187
+
188
+
189
+ self.m_button1 = wx.Button(self, wx.ID_ANY, u"open dialog", wx.DefaultPosition, wx.DefaultSize, 0)
190
+
191
+ bSizer1.Add(self.m_button1, 0, wx.ALL, 5)
192
+
193
+ self.m_button2 = wx.Button(self, wx.ID_ANY, u"write", wx.DefaultPosition, wx.DefaultSize, 0)
194
+
195
+ bSizer1.Add(self.m_button2, 0, wx.ALL, 5)
196
+
197
+ self.m_listBox1 = wx.ListBox(self, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, m_listBox1Choices, 0)
198
+
199
+ bSizer1.Add(self.m_listBox1, 0, wx.ALL, 5)
200
+
201
+
202
+
203
+ self.SetSizer(bSizer1)
204
+
205
+ self.Layout()
206
+
207
+ self.Centre(wx.BOTH)
208
+
209
+
210
+
211
+ self.m_button1.Bind(wx.EVT_BUTTON, self.button1_click)
212
+
213
+ self.m_button2.Bind(wx.EVT_BUTTON, self.button2_click)
214
+
215
+
216
+
217
+ def __del__(self):
218
+
219
+ pass
220
+
221
+
222
+
223
+ # Virtual event handlers, overide them in your derived class
224
+
225
+ def button1_click(self, event):
226
+
227
+ dialog1 = child_dialog(frame)
228
+
229
+
230
+
231
+ def button2_click(self, event):
232
+
233
+ # self.m_listBox1.Append(self.list1)
234
+
235
+ pass
236
+
237
+
238
+
239
+
240
+
241
+ if __name__ == '__main__':
242
+
243
+ app = wx.App(False)
244
+
245
+ frame = parent_project(None)
246
+
247
+ frame.Show(True)
248
+
249
+ app.MainLoop()
250
+
251
+
252
+
253
+ ```
254
+
89
255
 
90
256
 
91
257
  ###補足

2

実現したいことをより詳細に記載。

2021/06/19 12:27

投稿

Lups20
Lups20

スコア2

test CHANGED
File without changes
test CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  Python初心者です。GUIとしてwxpythonを使っています。
4
4
 
5
- 親ウィンドウから子ウィンドウを呼び出して、子ウィンドウで選んだ結果(リストや日時データなどの値)を親ウィンドウにあるリストに表示または追加したいです。
5
+ 親ウィンドウから子ウィンドウを呼び出して、子ウィンドウで選んだ結果(リストや日時データなどの値)を子ウィンドウにあるボタン一つで親ウィンドウにあるリストに表示または追加したいです。
6
6
 
7
7
 
8
8
 

1

初心者マークを付け忘れたため。

2021/06/19 03:23

投稿

Lups20
Lups20

スコア2

test CHANGED
File without changes
test CHANGED
@@ -88,8 +88,6 @@
88
88
 
89
89
 
90
90
 
91
-
92
-
93
91
  ###補足
94
92
 
95
93
  Anacondaで構築。