【问题标题】:How do you display a figure in matplotlib using PySide2?如何使用 PySide2 在 matplotlib 中显示图形?
【发布时间】:2019-07-28 06:55:04
【问题描述】:

我正在尝试学习 matplotlib,并尝试测试以下代码。

import matplotlib
from matplotlib.figure import Figure  
import matplotlib
from matplotlib.figure import Figure
from matplotlib.backends.backend_qt4agg import FigureCanvasQTAgg as     FigureCanvas
import sys
from PySide2 import QtGui   

if __name__ == "__main__":

    app = QtGui.QApplication(sys.argv)
    wid = QtGui.QWidget()
    wid.resize(250, 150)
    grid = QtGui.QGridLayout()
    wid.setLayout(grid)
    fig = Figure(figsize=(7,5), dpi=65, facecolor=(1,1,1), edgecolor=(0,0,0))
    canvas = FigureCanvas(fig)
    grid.addWidget(canvas)
    wid.show()

但它似乎无法识别Figure的签名。

TypeError: 'PySide2.QtGui.QGridLayout.addWidget' 调用错误 参数类型:
PySide2.QtGui.QGridLayout.addWidget(FigureCanvasQTAgg) 支持 签名:
PySide2.QtGui.QGridLayout.addWidget(PySide2.QtGui.QWidget,int,int, PySide2.QtCore.Qt.Alignment = 0)
PySide2.QtGui.QGridLayout.addWidget(PySide2.QtGui.QWidget,int,int, int, int, PySide2.QtCore.Qt.Alignment = 0)

【问题讨论】:

    标签: python matplotlib pyside2


    【解决方案1】:

    PySide2 是 Qt5 的绑定,因此您必须使用backend_qt5agg 而不是backend_qt4agg,另一方面,建议在 matplotlib 之前导入后端(本例中为 PySide2),以便 matplotlib 在内部配置它,此外对于 QApplication,QWidget 和 QGridLayout 属于 QtWidgets,因为 Qt5 将它们与 QtGui 分开,最后当您向 QGridLayout 添加一个小部件时,您必须在以下参数中指明它的位置。

    考虑到上面的解决方案是

    import sys
    
    from PySide2 import QtWidgets
    from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as FigureCanvas
    from matplotlib.figure import Figure
    
    
    if __name__ == "__main__":
    
        app = QtWidgets.QApplication(sys.argv)
        wid = QtWidgets.QWidget()
        wid.resize(250, 150)
        grid = QtWidgets.QGridLayout(wid)
        fig = Figure(figsize=(7, 5), dpi=65, facecolor=(1, 1, 1), edgecolor=(0, 0, 0))
        canvas = FigureCanvas(fig)
        grid.addWidget(canvas, 0, 0)
        wid.show()
        sys.exit(app.exec_())
    

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-12-25
    • 2015-03-21
    • 1970-01-01
    • 1970-01-01
    • 2019-06-22
    • 2012-02-21
    • 2015-10-11
    • 1970-01-01
    相关资源
    最近更新 更多