[英]error in adding matplotlib widget into pyqt4
我试图使用以下代码将自定义窗口小部件添加到qtdesginer中
from PyQt4 import QtGui
from matplotlib.backends.backend_qt4agg import FigureCanvasQTAgg as FigureCanvas
import PySide
from matplotlib.figure import Figure
class MplCanvas(FigureCanvas):
def __init__(self):
self.fig = Figure()
self.ax = self.fig.add_subplot(111)
FigureCanvas.__init__(self, self.fig)
FigureCanvas.setSizePolicy(self, QtGui.QSizePolicy.Expanding,QtGui.QSizePolicy.Expanding)
FigureCanvas.updateGeometry(self)
class MplWidget(QtGui.QWidget):
def __init__(self, parent = None):
QtGui.QWidget.__init__(self, parent)
self.canvas = MplCanvas()
self.vbl = QtGui.QVBoxLayout()
self.vbl.addWidget(self.canvas)
self.setLayout(self.vbl)
但我只是给我一个错误
TypeError:'PySide.QtGui.QWidget.setSizePolicy'用错误的参数类型调用:PySide.QtGui.QWidget.setSizePolicy(Policy,Policy)支持的签名:PySide.QtGui.QWidget.setSizePolicy(PySide.QtGui.QSizePolicy) QWidget.setSizePolicy(PySide.QtGui.QSizePolicy.Policy,PySide.QtGui.QSizePolicy.Policy)
我不确定是什么引起了错误,因为我基本上遵循了这一部分http://packtlib.packtpub.com/library/9781847197900/ch06lvl1sec04
任何建议都是好的,因为我是这个qt设计师的新手。
我很幸运在我的自定义matplotlib小部件中继承了具有super(...).__init__()
FigureCanvas而不是BaseClass.__init__(self)
方法。 您的小部件对我有用,但做了一些小的更改:
class MplCanvas(FigureCanvas):
def __init__(self):
self.fig = Figure()
self.ax = self.fig.add_subplot(111)
super(MplCanvas, self).__init__(self.fig)
self.setSizePolicy(QtGui.QSizePolicy.Expanding,QtGui.QSizePolicy.Expanding)
self.updateGeometry()
另外...我同意@tcaswell,您应该选择PyQt4或PySide并避免同时导入两者:)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.