在用tkinter的库来做gui的时候,由于计算量太大 ,因此不得已学网上的教程,将按钮对应的函数加了一个线程,但这个函数里边有用matplotlib画图的部分,因此在运行的时候会报错UserWarning: Starting a Matplotlib GUI outside of the main thread will likely fail.该用什么方法解决呢,哪个计算量大的部分和画图并保存的都必须与一个按钮所绑定,画图所需要的参数也是哪个计算量较大的部分提供的,有点不知道该怎么写了,请各位大佬指教
你可以将画图部分用线程处理,处理结果放在队列,然后主线程去队列获取数据,展示在GUI上面
怎么将画图部分用线程处理呢,是和哪个计算量较大的部分放在一个线程里边吗,画完以后怎么将结果放在队列呢,刚开始学,还是太多不会的,需要画图的部分如下,其中需要的参数需要哪个计算量较大的部分来提供
a=plt.contourf(XX, YY, WW,levels=100, cmap='seismic')
levels = [-0.0001,0.0001]
plt.contourf(XX, YY, WW, levels=levels, colors='w')
b=np.linspace(maxnegativeW1, maxpositiveW1,num=12)
plt.colorbar(a, ticks=b)
创建一个figure对象(尽量不要用plt,这个方法是调api会影响其程序内他所有的画布)然后把figure对象作为变量直接给线程当作参数,然后直接在线程里draw就行了