我试图让一个Qt窗口在按下按钮时在另一个Qt窗口中显示matplotlib图形。我有一个.py文件,它用按钮生成用户界面,还有一个.py文件,运行时会打开一个显示图形的QT窗口。在
如果我只运行第二个.py文件,那么显示图形的QT窗口就会打开,这没问题。在
但是,问题是,当我运行第二个.py文件时,pythonw.exe当我单击按钮运行第二个.py文件时崩溃。在
下面是代码(一个.py文件。如果用户希望看到matplotlib图形,它将创建一个用户界面,供用户单击按钮):
import matplotlib
matplotlib.use('Qt4Agg')
import pylab
from matplotlib.backends.backend_qt4agg import FigureCanvasQTAgg as FigureCanvas
from matplotlib.figure import Figure
try:
_fromUtf8 = QtCore.QString.fromUtf8
except AttributeError:
def _fromUtf8(s):
return s
try:
_encoding = QtGui.QApplication.UnicodeUTF8
def _translate(context, text, disambig):
return QtGui.QApplication.translate(context, text, disambig, _encoding)
except AttributeError:
def _translate(context, text, disambig):
return QtGui.QApplication.translate(context, text, disambig)
import matplotlibtest
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName(_fromUtf8("MainWindow"))
MainWindow.resize(690, 786)
self.centralwidget = QtGui.QWidget(MainWindow)
self.centralwidget.setObjectName(_fromUtf8("centralwidget"))
self.widget_2 = QtGui.QWidget(self.centralwidget)
self.widget_2.setGeometry(QtCore.QRect(120, 20, 471, 51))
self.widget_2.setObjectName(_fromUtf8("widget_2"))
#...some other irrelevant code...
self.plotButton = QtGui.QPushButton(self.layoutWidget_2)
self.plotButton.setMinimumSize(QtCore.QSize(0, 23))
self.plotButton.setObjectName(_fromUtf8("plotButton"))
self.gridLayout_2.addWidget(self.plotButton, 9, 1, 1, 1)
self.plotButton.clicked.connect(self.showimage)
def showimage(self):
matplotlibtest.main()
因此,当用户单击绘图按钮时,的主要功能是matplotlibtest.py运行。在
在matplotlibtest.py,我有这个代码(来自http://packtlib.packtpub.com/library/9781847197900/ch06)。此代码在运行时打开一个QT窗口,该窗口显示一个简单的matplotlib图形。这里没有问题——当这段代码运行时,它会像我希望的那样打开图形。在
^{pr2}$如何在单击按钮时显示matplotlib图形?在
为什么pythonw.exe崩溃?在
如果我想传递参数(x=[1,2,3],y=[1,1,1])来生成图,我会把class Qt4MplCanvas(FigureCanvas): def __init__(self,parent,x,y)
放进去,当我构造它时,我会写qmc = Qt4MplCanvas(self.main_widget, [1,2,3], [1,1,1])
?在
在__init__
中,对于任何Qt对象,我们是否运行super的__init__
来初始化Qt对象的父对象?
为什么super(MyMainWindow,self)
的参数是?在
为什么我们在
class Ui_MainWIndow(object):
但我们使用'QtGui.QMainWindow'在
class MyMainWindow(QtGui.QMainWindow)
?在
是'object'和'QtGui.QMainWindow“争论?在
当我们构造一个Ui主窗口时,为什么要写
self.ui = Ui_MainWindow()
而不是
self.ui = Ui_MainWindow(object)
?在
好吧,你的代码有几个问题:
Ui
定义对象,但您没有使用它。在matplotlib.use
两次(一次在main.py中,一次在matplotlibtest中)PyQt
应用程序,必须创建一个QApplication
对象对于解决方案,请检查代码,以下是我对您的代码所做的一些修改,以使其正常工作:
在.py主文件中:
在matplotlibtest.py:
^{pr2}$相关问题 更多 >
编程相关推荐