【问题标题】:How can I show matplotlib on my PyQt5 Qwidget如何在我的 PyQt5 Qwidget 上显示 matplotlib
【发布时间】:2020-06-07 05:54:06
【问题描述】:

我想绘制我的 PyQt 设计器文件。 我做了2个py文件,一个是Main,另一个是ui文件(pyuic) 这是用户界面的代码

self.graph_widget = QtWidgets.QWidget(self.tab_4)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Expanding)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.graph_widget.sizePolicy().hasHeightForWidth())
self.graph_widget.setSizePolicy(sizePolicy)
self.graph_widget.setObjectName("graph_widget")

graph_widget 是小部件名称

    def show_graph(self):

        self.graph_widget.fig = plt.Figure()
        self.graph_widget.canvas = FigureCanvas(self.graph_widget.fig)

        canvasLayout = QVBoxLayout()
        canvasLayout.addStretch(1)

        self.graph_widget.layout = QHBoxLayout()
        self.graph_widget.layout.addLayout(canvasLayout)

        ax = self.graph_widget.fig.add_subplot(1, 1, 1) 
        ax.grid()
        self.graph_widget.canvas.draw() 

这是用于在我的小部件上显示图表的 Main 代码。 我想在我的小部件上显示图表,但它不起作用。 就像发送信号之前一样显示白色窗口。 并且不打印任何错误。

请告诉我如何打印。

【问题讨论】:

标签: python matplotlib pyqt5 qt-designer


【解决方案1】:

我认为您不太了解对象的概念。 在你的函数show_graph()中,你写了self.graph_widget.fig,也就是说,fig是对象graph_widget的一个属性(一个变量),它是一个对象QWidget,所以通过写self.graph_widget.fig = plt.Figure( ) 没有意义。 我建议你这个解决方案:

def show_graph(self):
    from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as FigureCanvas #You can put it at the beginning of your program
    self.fig = plt.Figure()
    self.plot = self.fig.add_subplot()
    self.canvas = FigureCanvas(self.fig)
    self.canvas.draw()
    #Create a layout
    layout = QVBoxLayout()
    layout.addWidget(self.canvas)
    #You can now add your layout to your QWidget()
    self.graph_widget.setLayout(layout)
    #You can active the grid by the following line
    self.plot.yaxis.grid()

对不起我的英语,我是法国人。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-04-17
    • 2019-08-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-12
    相关资源
    最近更新 更多