【发布时间】:2014-04-26 17:44:06
【问题描述】:
我在将接收到的数据从 TCP 连接写入 TextCtrl(使用 wxPython)时遇到一些问题
我有一个带有 while 循环的线程,它等待从用户接收到的数据:
def run(self):
while 1:
try:
# receive
data = self.channel.recv(1024)
except socket.error, msg:
if 'timed out' in msg:
continue
if data:
wx.PostEvent(self._notify_window, ResultEvent('[' + self.username + ']>> ' + data + '\n'))
self.text.AppendText(data+"")
notify_window 是我的主框架,每个连接都有一个 MDIChildFrame,对于每个 ChildFrame 我附加 TextCtrl 以显示接收到的数据。
- 如果我更改 ChildFrame(特定连接)的标题,例如 window.SetTitle("..") 一切正常。
- 如果我将文本附加到某个 TextCtrl -> 在本期中,我的应用程序的 ChildFrame 的 TextCtrl 将挂起。
- 正如您所见,wx.PostEvent(...) 工作正常,它将所有数据打印到一个 TextCtrl。但是这个 TextCtrl 是在我创建 MainFrame 实例时创建的,而不是像另一个动态一样。
我尝试在接收数据的 while 循环中使用 wx.CallAfter,但它没有帮助。
有人遇到过这个问题吗?
谢谢!
笔记:
我修改了示例:pychatroom - server.py
我写给 TextCtrl 的 Class 是 ClientThread
【问题讨论】:
标签: wxpython