从plt.show()命令保存绘图时出现分段错误

时间:2014-07-16 07:57:51

标签: python matplotlib pyside

首先,我创建了一个类,除了其他函数之外,我已经定义了plotpos

class Car:
    def __init__(self, *args):
        ...
    def plotpos(self, args):
        fig, ax = plt.subplots()
        plt.hold(True)
        for key in args:
           plt.plot(self.Time, self.parts[key])
        plt.show()
        return fig, ax

然后,我使用PySide和Qt Designer创建了一个应用程序。除了其他东西,它有一个按钮,当它被点击时,调用类plotpos中定义的函数Car,如下所示:

import sys
from PySide.QtCore import *
from PySide.QtGui import *
import main_gui

from Vehicles import Car
import matplotlib.pyplot as plt

class MainWidget(QWidget,main_gui.Ui_Form):
    def __init__(self, parent = None):
        super(MainWidget, self).__init__(parent)
        self.setupUi(self)
        ...
        self.connect(self.pb_show, SIGNAL('clicked()'), self.plotsol)

    def plotsol(self):
        states = {'Var1' : self.checkbox1.isChecked(), ... many more... ,
                           'VarN' : self.checkbox2.isChecked}
        args = []
        for key in states.keys():
            if states[key] == True:
                args += (key,) 
        fig, ax = self.car.plotpos(args) #car is an instance of Car

app = QApplication(sys.argv)
form = MainWidget()
form.show()
app.exec_()

好的,所以当按下按钮时,窗口会弹出,我可以看到我处理过的数据的漂亮图表,尽管在终端显示QCoreApplication::exec: The event loop is already running

但是,当我想使用该窗口中包含的保存按钮保存图表时,在我输入有效名称并按“保存”后,应用程序崩溃并显示在终端中:Segmentation Fault, (core dumped)

我希望你能理解我(我不是母语为英语的人),并理解我的代码。 Saludos !!

0 个答案:

没有答案