小编Max*_*ady的帖子

pylab.show()“QCoreApplication::exec:事件循环已经在运行”

我有一个使用 matplotlib 和 QT4Agg 后端的 Python 基本图像查看器程序。其中一项功能是从 2D-FFT 生成 2D 功率谱,并将其放置在一张图中的第二个图中。我想添加一个按钮,用于获取 FFT 图像并将其弹出到另一个窗口中,以便可以对其进行更详细的分析。

我的代码当前正在执行我需要的所有操作,但它也会向终端引发 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()
Run Code Online (Sandbox Code Playgroud)

我定义了一个按钮,并通过 Button.on_clicked(popout) 链接到 popout() 函数。在程序的主循环中,启动一个图形并用两个图显示。所以 pylab.show() 已经被调用过一次

我遇到的问题似乎是我再次调用 pylab.show() ,这会生成异常或警告事件循环已启动。

我尝试使用 pylab.draw() 而不是 pylab.show() 但当我这样做时,按钮单击不会显示新的图形

有没有简单的方法来抑制这个警告?或者是否有另一种方法可以生成新图形并使其可见而无需调用 pylab.show() ?

编辑:我还尝试在创建新图形和新轴后添加 nfig.canvas.draw() ,然后在 popout() 函数末尾调用 pylab.draw() 。这仍然没有显示新的图形 onclick

EDIT2:切换到使用 TKAgg 后端并调用 pylab.show() 可以使问题消失。关于为什么这只是 QT4Agg 后端的一个问题有什么想法吗?

python qt exception pyqt4

4
推荐指数
1
解决办法
6699
查看次数

标签 统计

exception ×1

pyqt4 ×1

python ×1

qt ×1