簡體   English   中英

將matplotlib小部件添加到pyqt4中時出錯

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM