我正在研究一种在Pyside GUI中集成matplotlib图的工具。一切顺利,直到我关闭GUI;我有这个错误消息" python.exe已停止工作"。我做了几次测试,我注意到有线的事情:
这只出现在经典的python游戏中;每当我关闭我的GUI AFTER 有一些情节。
这是我的代码:
import os
import sys
import pandas as pd
import PySide
import matplotlib
matplotlib.use('wxAgg')
matplotlib.rcParams['backend']='qt4agg'
matplotlib.rcParams['backend.qt4']='PySide'
from matplotlib.figure import figure
from matplotlib.backends.backend_qt4agg import (FigureCanvasQTAgg as FigureCanvas, NavigationToolbar2QT as NavigationToolbar)
import matplotlib.pyplot as plt
class Main():
def __init__(self):
QtGui.QMainWindow.__init__(self)
#loading of the MainWindow and buttons initialization....
self.MainWindow.show()
sys.exit(app.exec_())
def plotGeneration(self):
fig=plt.figure(facecolor='white')
canvas=FigureCanvas(fig)
canvas.setParent(self.MainWindow)
ax=fig.add_subplot(111)
ax.set_xlabel('Date')
ax.set_ylabel('Time')
toolbar=NavigationToolbar(canvas, self.MainWindow, coordinates=True)
self.MainWindow.mplwindow.addWidget(toolbar, 0,0,1,1)
plt.clf() #tried from other post seen with this issue
try:
limit=self.MainWindow.limitTime.text()
ax.plot((self.dateList[0], max(self.dateList)), (int(limit), int(limit)), 'r')
except ValueError:
pass
ax.plot(self.dateList, self.timeList, 'o-')
canvas.draw()
self.MainWindow.gridLayoutPlot.addWidget(canvas, 0,0,1,1)
plt.close(fig) #Also tried from other posts
if __name__ == '__main__':
app=QtGui.QApplication(sys.argv)
MainWindow=Main()
MainWindow.show()
sys.exit(app.exec_())
其他类似问题没有对我有用,我使用的是Python 3.1和matplotlib 1.2.0。
有没有人有想法?感谢
更新
感谢下面的评论,我通过添加以下行解决了python31.exe在使用基本python运行启动脚本时崩溃:
self.setAttribute(QtCore.Qt.WA_DeleteOnClose)
但是当我尝试使用cx_freeze编写脚本时,我仍然会收到相同的错误消息。我使用的是cx_freeze 4.2.3。