【发布时间】:2017-02-21 19:41:51
【问题描述】:
我正在使用 PyQt4 和 matplotlib 制作一个 gui。我发现this 对制作我正在尝试使用的选项卡式 gui 窗口很有帮助。一切似乎都运行良好(进行了一些小的调整);但是,每当我关闭主窗口时,我都会收到“Python 意外退出”错误以及分段错误。虽然这不会影响程序的运行,但它很烦人,我想找出问题所在。
现在,在试图弄清楚发生了什么的同时,我想到了下面的 MWE(如果你愿意的话,也可以是最小的损坏示例)
import sys
import matplotlib
matplotlib.use('Qt4agg')
import matplotlib.pyplot as plt
import numpy as np
from PyQt4 import QtCore
from PyQt4 import QtGui as qt
if __name__ == "__main__":
fig = plt.figure()
x, y = np.random.randn(2, 40)
ax = fig.add_subplot(111)
ax.plot(x, y, 'o')
ax.hold(False)
app = qt.QApplication(sys.argv)
# ui = MplMultiTab(figures=[fig], labels=["yay"])
ui = qt.QMainWindow()
ui.main_frame = qt.QWidget()
vbox = qt.QVBoxLayout()
vbox.addWidget(fig.canvas)
ui.main_frame.setLayout(vbox)
ui.setCentralWidget(ui.main_frame)
ui.show()
sys.exit(app.exec_())
问题似乎是将图形画布添加到窗口中,好像我不这样做而是制作一个空的gui(删除vbox.addWidget(fig.canvas))一切都很好并且没有段错误。
任何人都可以看到出了什么问题,还是 matplotlib 或 pyqt 中的错误?同样有趣的是,如果我将我的 gui 设置为类似于this answer,那么我就没有分段错误,但我无法真正弄清楚它们之间的区别是什么。
为了大家的信息,我在 python 3.5.2 上使用 PyQt 版本 4.11.4 和 OSX 10.11.6 上的 matplotlib 版本 1.5.3 运行它。
【问题讨论】:
标签: matplotlib pyqt4