質問編集履歴

4

解決したコードの記載

2017/12/22 16:23

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -145,3 +145,139 @@
145
145
 
146
146
 
147
147
  解決策の提案、ご教授を頂けたら嬉しいです。
148
+
149
+
150
+
151
+
152
+
153
+ 動作停止が解決したコード
154
+
155
+ ```python
156
+
157
+ #メッセージ交換に使用する関数
158
+
159
+ def server_bind(port):
160
+
161
+ context = zmq.Context()
162
+
163
+ server = context.socket(zmq.REP)
164
+
165
+ server.bind("tcp://127.0.0.1:" + str(port))
166
+
167
+ return server
168
+
169
+
170
+
171
+ def client_connect(port):
172
+
173
+ context = zmq.Context()
174
+
175
+ client = context.socket(zmq.REQ)
176
+
177
+ client.connect("tcp://127.0.0.1:" + str(port))
178
+
179
+ return client
180
+
181
+
182
+
183
+ def server_recv(server, y, text_ctrl):
184
+
185
+ recv = server.recv_pyobj()
186
+
187
+ send = server.send_pyobj(y)
188
+
189
+ text_ctrl.SetValue(recv)
190
+
191
+
192
+
193
+ def client_recv(client, y, text_ctrl):
194
+
195
+ send = client.send_pyobj(y)
196
+
197
+ recv = client.recv_pyobj()
198
+
199
+ text_ctrl.SetValue(recv)
200
+
201
+
202
+
203
+ def button_event(event, CS_box, port_ctrl, text_ctrl):
204
+
205
+ port = port_ctrl.GetValue()
206
+
207
+ CS_select = CS_box.GetSelection()
208
+
209
+
210
+
211
+ if CS_select == 0:
212
+
213
+ server = server_bind(port)
214
+
215
+ s_recv = threading.Thread(target=server_recv,
216
+
217
+ args=(server,
218
+
219
+ "client君やあ(´・ω・`)",
220
+
221
+ text_ctrl))
222
+
223
+ s_recv.start()
224
+
225
+ else:
226
+
227
+ client = client_connect(port)
228
+
229
+ c_recv = threading.Thread(target=client_recv,
230
+
231
+ args=(client,
232
+
233
+ "server君やあ(´・ω・`)",
234
+
235
+ text_ctrl))
236
+
237
+ c_recv.start()
238
+
239
+
240
+
241
+ if __name__ == "__main__":
242
+
243
+ app = wx.App()
244
+
245
+
246
+
247
+ frame = wx.Frame(None, wx.ID_ANY, "test")
248
+
249
+ panel = wx.Panel(frame, wx.ID_ANY)
250
+
251
+
252
+
253
+ CS_box = wx.RadioBox(panel, wx.ID_ANY, pos=(0, 0),
254
+
255
+ choices=["server", "client"])
256
+
257
+
258
+
259
+ port_ctrl = wx.TextCtrl(panel, wx.ID_ANY, size=(40, 21), pos=(0, 50))
260
+
261
+ port_ctrl.SetMaxLength(4)
262
+
263
+ port_ctrl.SetValue("1234")
264
+
265
+
266
+
267
+ text_ctrl = wx.TextCtrl(panel, wx.ID_ANY, pos=(0, 120))
268
+
269
+
270
+
271
+ button = wx.Button(panel, wx.ID_ANY, "接続", pos=(0, 85))
272
+
273
+ event = lambda event:button_event(event, CS_box, port_ctrl, text_ctrl)
274
+
275
+ button.Bind(wx.EVT_BUTTON, event)
276
+
277
+
278
+
279
+ frame.Show()
280
+
281
+ app.MainLoop()
282
+
283
+ ```

3

変な代入があったので修正

2017/12/22 16:23

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -94,9 +94,9 @@
94
94
 
95
95
 
96
96
 
97
- CS_box = wx.radio_box = wx.RadioBox(panel, wx.ID_ANY, pos=(0, 0),
97
+ CS_box = wx.RadioBox(panel, wx.ID_ANY, pos=(0, 0),
98
98
 
99
- choices=["server", "client"])
99
+ choices=["server", "client"])
100
100
 
101
101
 
102
102
 

2

button_event関数に無駄な記述があった為修正

2017/12/20 16:38

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -60,11 +60,11 @@
60
60
 
61
61
  port = port_ctrl.GetValue()
62
62
 
63
- CS_select = CS_box.GetStringSelection()
63
+ CS_select = CS_box.GetSelection()
64
64
 
65
65
 
66
66
 
67
- if CS_box.GetSelection() == 0:
67
+ if CS_select == 0:
68
68
 
69
69
  #ここで動作が停止する。
70
70
 

1

誤字の訂正

2017/12/20 15:50

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -130,7 +130,7 @@
130
130
 
131
131
  button_event関数を実行すると#ここで動作が停止する。とコメントに書かれてある部分で、
132
132
 
133
- windowsの移動がままならなくなったり、閉じようとした時に動作が停止しましたと表示されます。
133
+ windowの移動がままならなくなったり、閉じようとした時に動作が停止しましたと表示されます。
134
134
 
135
135
  wxpythonとzmqが入っていればコピペで動きますのでどういう感じか見てもらえればわかるかと思います。
136
136
 
@@ -140,7 +140,7 @@
140
140
 
141
141
  もう片方が接続すればすぐに動くようになり、メッセージ交換も成功しますが、
142
142
 
143
- 中止して閉じたい時や、windowsをちょっと動かしたい時などに不便だなあと感じているのですが、どう解決したらいいのか悩んでいます。
143
+ 中止して閉じたい時や、windowをちょっと動かしたい時などに不便だなあと感じているのですが、どう解決したらいいのか悩んでいます。
144
144
 
145
145
 
146
146