gpt4 book ai didi

python - wxPython多线程matplotlib绘图不在主线程中

转载 作者:太空宇宙 更新时间:2023-11-03 12:11:13 33 4
gpt4 key购买 nike

我想做什么:

  1. 在线程中运行 TCPServer
  2. 获取数据“从套接字接收”
  3. 更新绘图并显示数据

我成功的是:

  1. wxPython 框架有一个按钮,
  2. 点击按钮启动套接字
  3. 从套接字接收数据

问题:

  1. 当我尝试从 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 "

代码:

  1. Main,我开始线程的地方

    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()
  2. 线程,我尝试绘制的地方:

    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 线程。

提前致谢,非常感谢您的帮助。

最佳答案

无论如何,谢谢,我解决了它,现在从不同的线程运行计时器,

它在语言方面的局限性,有解决方法就可以了

关于python - wxPython多线程matplotlib绘图不在主线程中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14585230/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com