[英]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.