我有一个使用matplotlib和QT4Agg后端的Python基本图像查看器程序。 其中一个功能是从2D-FFT生成2D功率谱,并将其放置在一个图中的第二个图中。我想添加的是一个按钮,它将FFT图像弹出并将其弹出到另一个窗口,以便更详细地分析它。pylab.show()“QCoreApplication :: exec:事件循环已经在运行”
我的代码目前正在做的一切,我需要它,但它也提高某种形式的QT异常或警告终端(这是被在OS X上运行):
“QCoreApplication :: EXEC:事件循环已经运行”
def popout(event):
nfig, nfftax = pylab.subplots(1, 1)
imgtoconv = getArr(files[imgindex])
fftimg = np.abs(fftpack.fftshift(fftpack.fft2(imgtoconv)))**2
nfftax.imshow(np.log10(fftimg), cmap=cm.Greys_r)
pylab.show()
我已经通过Button.on_clicked(跳隙) 定义并链接到跳隙()函数在程序的主循环中的按钮的图被启动,并且具有两个所示地块。所以pylab.show()已经被调用过一次
我遇到的问题似乎是我再次调用pylab.show(),它正在生成异常或警告事件循环已经启动。
我尝试使用pylab.draw()而不是pylab.show(),但是当我这样做,按一下按钮不会显示新图
有一种简单的方法来禁止这种警告?还是有另一种方法来产生新的图形,并使其可见而不回想pylab.show()?
编辑:我也尝试添加nfig.canvas.draw()后创建新图和新轴,然后在popout()函数结束时调用pylab.draw()。这仍然没有显示新的数字onclick
EDIT2:切换到使用TKAgg后端和调用pylab.show()使问题消失。任何想法为什么这只是QT4Agg后端的一个问题?
我必须在某个时候检查fi这个工程。 我已经改变了我的代码,以通过PyQt4在QT中嵌入mpl – 2015-03-24 16:40:51