【问题标题】:Plotting a chart inside a PyQT GUI在 PyQT GUI 中绘制图表
【发布时间】:2022-06-10 17:39:37
【问题描述】:

我想在 pyQT GUI 中绘制图表。我已经阅读了很多教程,但是那些在单独的窗口中绘制图表。我需要将其绘制在与其他按钮和字段相同的窗口中。

在我的 main.py 文件中,我导入了使用 QT 设计器生成的 Ui_MainWindow 类。但我不知道如何在 MainWindow 中绘制它

Python 图形用户界面

Matplotlib 画布类创建图形

class MplCanvas(FigureCanvas):
    def __init__(self):
        self.fig = Figure()
        self.ax = self.fig.add_subplot(111)
        FigureCanvas.__init__(self, self.fig)
        FigureCanvas.setSizePolicy(self, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Expanding)
        FigureCanvas.updateGeometry(self)

    def atualizar(self):
        global tempoInicio
        tempoInicio = self.campoTempoInicio.dateTime()
        print(tempoInicio.toPyDateTime())

        x=range(0, 10)
        y=range(0, 20, 2)
        self.FigureCanvas.canvas.ax.plot(x, y)
        self.FigureCanvas.canvas.draw()

我试过这样,但效果不佳(按照教程)

提前感谢您阅读本文。

【问题讨论】:

    标签: python qt user-interface charts pyqt


    【解决方案1】:

    这里有一个完整的例子,应该会有所帮助:

    import sys
    from PyQt5 import QtWidgets, QtCore
    from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as FigureCanvas
    from matplotlib.backends.backend_qt5agg import NavigationToolbar2QT as NavigationToolbar
    import matplotlib.pyplot as plt
    
    
    class PlotViewer(QtWidgets.QWidget):
    
        doubleClickAction = QtCore.pyqtSignal(str)
    
        def __init__(self, parent=None):
            super(PlotViewer, self).__init__(parent)
    
            self.figure = plt.figure(figsize=(5, 5))
            self.figureCanvas = FigureCanvas(self.figure)
            self.navigationToolbar = NavigationToolbar(self.figureCanvas, self)
    
            # create main layout
            layout = QtWidgets.QVBoxLayout()
            layout.addWidget(self.navigationToolbar)
            layout.addWidget(self.figureCanvas)
            self.setLayout(layout)
    
            # create an axis
            x = range(0, 10)
            y = range(0, 20, 2)
            ax = self.figure.add_subplot(111)
            ax.plot(x, y)
    
            # show canvas
            self.figureCanvas.show()
    
    
    if __name__ == "__main__":
    
        app = QtWidgets.QApplication(sys.argv)
        widget = PlotViewer()
        widget.show()
        app.exec_()
    

    【讨论】:

      猜你喜欢
      • 2012-02-18
      • 2017-06-28
      • 2023-03-24
      • 1970-01-01
      • 2016-06-24
      • 1970-01-01
      • 1970-01-01
      • 2019-09-13
      • 2013-04-11
      相关资源
      最近更新 更多