RuntimeError: wrapped C/C++ object of type TextCtrl has been deleted

1.一个有关于socket客户端和服务端的简单程序
2.使用wxpython做GUI

from socket import *
import time
import wx
import threading
import struct

class S(wx.Frame):
def init(self,parent,title):
wx.Frame.__init__(self,parent,wx.ID_ANY,title = title, size = (700,500))

    #创建画板
    self.panel = wx.Panel(self,wx.ID_ANY)
    self.panel.SetBackgroundColour("White")

    #创建按钮
    self.button = wx.Button(self.panel,wx.ID_ANY,'发送', pos = (540,400),size = (50,25))
    self.Bind(wx.EVT_BUTTON,self.OnClick,self.button)

    #创建静态文本
    self.static = wx.StaticText(self.panel,wx.ID_ANY,'输入消息',pos = (10,380))
    self.static.SetBackgroundColour('White')

    #创建记录区域
    self.log = wx.TextCtrl(self.panel, wx.ID_ANY,"",size = (620,310),pos = (10,60), style = wx.TE_MULTILINE|wx.TE_READONLY)

    #创建输入区域
    self.inputmsg = wx.TextCtrl(self.panel, wx.ID_ANY,size = (520,25),style = wx.TE_PROCESS_ENTER,pos = (10,400))
    self.Bind(wx.EVT_TEXT_ENTER, self.OnClick, self.inputmsg)

    #连接
    self.addr = ('127.0.0.1',5354)
    self.ss = socket(AF_INET,SOCK_STREAM)
    self.ss.bind(self.addr)
    self.ss.listen(5)
    self.data = (u"等待客户连接……\n")
    self.log.AppendText(self.data)

    #显示
    self.Show(True)

    #text
    self.data = ''
    self.temp = ''
    self.msg = ''
    self.flag = True
    self.sendmsg = ''

def OnClick(self,event):
    self.msg = self.inputmsg.GetValue()
    self.sendmsg = (u"回复:%s\n" % (self.msg))
    self.log.AppendText(self.sendmsg)
    self.inputmsg.Clear()
    self.flag = True

def run(self):
    cs,caddr = self.ss.accept()
    while True:
        self.data = cs.recv(1024)
        if not self.data:
            break
        self.temp = str(self.data,'utf-8')
        self.log.AppendText(self.temp)
        if self.flag:
            cs.send(bytes(u"%s\n"%(self.sendmsg),'utf-8'))
            self.flag = False
    self.cs.close()
    self.ss.close()

class C(wx.Frame):
def init(self,parent,title):
wx.Frame.__init__(self,parent,wx.ID_ANY,title = title, size = (700,500))

    #创建画板
    self.panel = wx.Panel(self,wx.ID_ANY)
    self.panel.SetBackgroundColour("White")

    #创建按钮
    self.button = wx.Button(self.panel,wx.ID_ANY,'发送', pos = (540,400),size = (50,25))
    self.Bind(wx.EVT_BUTTON,self.OnClick,self.button)

    #创建静态文本
    self.static = wx.StaticText(self.panel,wx.ID_ANY,'输入消息',pos = (10,380))
    self.static.SetBackgroundColour('White')

    #创建记录区域
    self.log = wx.TextCtrl(self.panel, wx.ID_ANY,'',size = (620,310),pos = (10,60), style = wx.TE_RICH|wx.TE_MULTILINE|wx.TE_READONLY)

    #创建输入区域
    self.inputmsg = wx.TextCtrl(self.panel, wx.ID_ANY,'',size = (520,25),style = wx.TE_PROCESS_ENTER,pos = (10,400))
    self.Bind(wx.EVT_TEXT_ENTER, self.OnClick, self.inputmsg)

    #连接
    self.addr = ('127.0.0.1',5354)
    self.client = socket(AF_INET,SOCK_STREAM)
    try:
        # Connect to server and send data
        self.client.connect(self.addr)
        self.log.AppendText(u"连接服务器成功...\n")

    except Exception:
        self.log.AppendText(u"连接服务器失败...\n")
        self.client.close()


    #显示
    self.Show(True)

    #text
    self.data = ''
    self.temp = ''
    self.msg = ''
    self.flag = True
    self.sendmsg = ''

def OnClick(self,event):
    self.msg = self.inputmsg.GetValue()
    self.sendmsg = (u"发送:%s\n" % (self.msg))
    self.client.send(bytes(self.msg,'utf-8'))
    self.log.AppendText(self.sendmsg)
    self.inputmsg.Clear()

def run(self):
    while True:
        self.data = self.client.recv(1024)
        if not self.data:
            break
        self.temp = str(self.data,'utf-8')                
        self.log.AppendText(self.temp)
    self.client.close()

app = wx.App(False)
frame1 = S(parent = None, title = '服务端')
frame2 = C(parent = None, title = '客户端')
app.MainLoop()
threads = []
t1 = threading.Thread(target = frame1.run)
t2 = threading.Thread(target = frame2.run)
threads.append(t1)
threads.append(t2)
for t in threads:
t.start()

在接收部分出现问题,接收到的代码,应如何插入到只读文本中,使用AppendText()出现RuntimeError: wrapped C/C++ object of type TextCtrl has been deleted错误

应该怎么解决

试着在self.log1.AppendText()前插入了self.log1.AppendText(u"你好\n")这次在新添语句的地方报错了

大概明白错哪儿了,想请教一下解决办法

改用单线程访问看看是否正常,可能是线程同步的问题,主界面关闭了,另一个线程还在试图访问它

TextCtrl has been deleted:字面理解就是TextCtrl被删除了,可能对象已被释放

刚刚有类似问题找到答案:
在命令行输出重定向到的类里面添加一个函数:

def flush(self):
    pass
```python



```