与PyQt一起重新显示Matplotlib中的图

时间:2014-07-18 11:42:01

标签: matplotlib pyqt4

我有一个使用PyQt和Matplotlib编写的程序,我用它来显示恒星光谱。

该程序有一个对话框,我可以用它来选择所需的光谱并调整X / Y比例和其他东西。

当在对话框中进行更改时,我有代码做(用matplotlib.pylab导入s plt)

plt.clf()
(replot the newly-selected spectra)
plt.show()

这适用于旧版本的Matplotlib(1.0.0)

然而,随着Matplotlib的更新版本(我正在尝试1.3.1),我得到了奇怪的结果。我第一次没关系,但每次后续尝试都无法更新情节。我也收到很多消息:

QCoreApplication::exec: The event loop is already running

每次程序尝试调用上面的代码时,图表都不会更新。

如果我将代码的最后一部分更改为

plt.show(False)

这会使消息消失,但情节仍未更新。

我可以让情节更新的唯一方法是更改​​

plt.clf()

plt.close()

但这看起来很糟糕,因为每次选择不同的光谱时,显示窗口会关闭并重新打开。

有没有更好的方法来做这一切?

如果可以,我宁愿使用新版本的Matplotlib,因为我还需要使用较新版本的Scipy,其中包含我正在使用的旧版本的例程。在大学,我正在工作,就软件版本而言,它是“全部旧”或“全新”。

感谢您提供任何帮助。

1 个答案:

答案 0 :(得分:0)

OP解决方案。

我做:

matplotlib.interactive(True)

并且不要打扰显示()的任何参数,它会做我想要的。