我有一个使用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,其中包含我正在使用的旧版本的例程。在大学,我正在工作,就软件版本而言,它是“全部旧”或“全新”。
感谢您提供任何帮助。
答案 0 :(得分:0)
OP解决方案。
我做:
matplotlib.interactive(True)
并且不要打扰显示()的任何参数,它会做我想要的。