我想做什么:
我成功做了什么:
问题:
当我尝试从TCPServer线程调用绘图函数时,我收到此错误
"PyAssertionError: C++ assertion "wxThread::IsMain()" failed at ..\..\src\common\timercmn.cpp(66)
in wxTimerBase::Start(): timer can only be started from the main thread "
守则:
主要,我在哪里开始线程
def start_socket(self):
HOST = ''
PORT_A = 6340
self.server_A = ThreadedTCPServer((HOST, PORT_A), ThreadedTCPRequestHandler)
self.server_temp = self.server_A
self.server_A_thread = threading.Thread(target=self.server_A.serve_forever)
self.server_A_thread.setDaemon(True)
self.server_A_thread.start()
线程,我试图绘制:
class ThreadedTCPRequestHandler(SocketServer.BaseRequestHandler):
def handle(self):
self.Main = Main(None, -1, '')
self.data = self.request.recv(1024).strip()
print "%s wrote: " % self.client_address[0]
print self.data
plt.ion()
self.fig = plt.figure(1)
print self.image_scale
ax = self.fig.add_subplot(111)
self.image_scale = ([1,2], [ 4,10 ] )
cax = plt.imshow(self.image_scale, cmap='Greys', interpolation='nearest' )
draw()
通过调试,错误来自这一行:
self.fig = plt.figure(1)
Error: "timer can only be started from the main thread"
所以,不确定,但我认为我需要在wx.Frame的主要功能中进行绘图,是否有任何解决方案允许保持正常程序运行,并允许在另一个线程中实时绘图?特别是我打算制作一个以上的TCPServer线程。
提前感谢您,我们将非常感谢您的帮助。
答案 0 :(得分:-1)
非常感谢,我解决了它,现在从不同的线程运行计时器,
它在语言方面的局限性,以及可行的解决方法