首先,我创建了一个类,除了其他函数之外,我已经定义了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 !!