我想在我自己的GUI应用程序上使用matplotlib,因此决定使用PyQt5实现它。我在下面写了测试代码。
import sys
from PyQt5.QtWidgets import QApplication, QMainWindow
import matplotlib as mpl
mpl.use('Qt5Agg')
import matplotlib.pyplot as plt
class MyApp(QMainWindow):
def __init__(self):
super().__init__()
self.show()
self.raise_()
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = MyApp()
sys.exit(app.exec_())
然而,我遇到了一个奇怪的问题。 当我在iPython上运行代码时,没有问题。 第二次运行也行。 但是,在我第三次启动应用程序并关闭它之后,iPython冻结了一些消息。消息如下。
QEventLoop: Cannot be used without QApplication
QSocketNotifier: Can only be used with threads started with Thread
这个问题可以在我的电脑上重现。为什么会发生这样的崩溃? 我使用python(3.5.2),iPython(5.1.0)和matplotlib(1.5.3)。 PC的操作系统是Mac OS X(10.11.4)。