在PyQt5 RAD应用程序中使用matplotlib会在Plot窗口正确显示后导致Segmentation Fault。系统:Fedora 19 3.14.17,matplotlib-1.4.0.tar.gz是从matplotlib.org下载的,并建立在这个系统上。
应用程序有一个连接到函数" doactionpushbutton"的按钮,当点击该功能时,输入的功能和带有标签"图1"是开放的,是正确的。窗口保持打开状态,直到光标移动到窗口上,此时关闭绘图窗口和主应用程序窗口,并返回分段错误消息。
由于我是mathplotlib的新手,问题是"我做错了什么?"
提前感谢您的帮助。
注意:我提供了一个缩小尺寸的完整程序来演示此问题。
适用的代码如下:
主窗口
# Form implementation generated from reading ui file 'mainwindow.ui'
#
# Created: Thu Aug 28 18:24:05 2014
# by: PyQt5 UI code generator 5.3.1
#
# WARNING! All changes made in this file will be lost!
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.resize(400, 300)
self.centralWidget = QtWidgets.QWidget(MainWindow)
self.centralWidget.setObjectName("centralWidget")
self.pushButton = QtWidgets.QPushButton(self.centralWidget)
self.pushButton.setGeometry(QtCore.QRect(20, 20, 97, 31))
self.pushButton.setObjectName("pushButton")
MainWindow.setCentralWidget(self.centralWidget)
self.menuBar = QtWidgets.QMenuBar(MainWindow)
self.menuBar.setGeometry(QtCore.QRect(0, 0, 400, 27))
self.menuBar.setObjectName("menuBar")
MainWindow.setMenuBar(self.menuBar)
self.mainToolBar = QtWidgets.QToolBar(MainWindow)
self.mainToolBar.setObjectName("mainToolBar")
MainWindow.addToolBar(QtCore.Qt.TopToolBarArea, self.mainToolBar)
self.statusBar = QtWidgets.QStatusBar(MainWindow)
self.statusBar.setObjectName("statusBar")
MainWindow.setStatusBar(self.statusBar)
self.retranslateUi(MainWindow)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
def retranslateUi(self, MainWindow):
_translate = QtCore.QCoreApplication.translate
MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
self.pushButton.setText(_translate("MainWindow", "PushButton"))
计划
import sys
import numpy as np
from PyQt5 import QtWidgets, QtGui, QtWidgets
import matplotlib
#matplotlib.use('')
import matplotlib.pyplot as plt
from mainwindow import Ui_MainWindow
class Editor(QtWidgets.QMainWindow):
def __init__(self):
super(Editor, self).__init__()
self.ui=Ui_MainWindow()
self.ui.setupUi(self)
self.show()
self.ui.pushButton.clicked.connect(self.doactionpushButton)
def doactionpushButton(self):
self.plot_it()
def plot_it(self):
# red dashes, blue squares and green triangles
t = np.arange(0., 5., 0.2)
plt.plot(t, t, 'r--', t, t**2, 'bs', t, t**3, 'g^')
plt.show(block=True)
def main():
app = QtWidgets.QApplication(sys.argv)
ex = Editor()
sys.exit(app.exec_())
if __name__ == '__main__':
main()
答案 0 :(得分:0)
下载matplotlib-master.zip并安装它可以解决问题。由于某种原因,matplotlib(1.4.0)的版本没有tcaswell提出的修正。 感谢tcaswell的帮助。