如何在每个子窗口中绘制图形

2024-06-16 10:16:34 发布

您现在位置:Python中文网/ 问答频道 /正文

如何在每个子窗口中绘制图形

我只能画一个子窗口。这在所有四个方面都是必要的

您需要绘制相同的数组“mas”

如何向每个子窗口添加行和其他元素

我做错了什么

from PyQt5.QtWidgets import QApplication, QMainWindow, QMdiArea, QMdiSubWindow
from PyQt5 import QtCore, QtGui, QtWidgets, QtChart

mas =[1.33, 1.15, 1.55, 1.65, 1.64, 1.91, 1.33, 2.3, 1.5, 1.35, 2.52, 1.77, 1.7, 1.87, 2.0, 1.55, 1.73, 2.1,
              1.33, 1.15, 1.55, 1.92, 1.64, 1.91, 1.33, 1.71, 1.5, 1.35, 1.22, 1.77, 1.7, 1.87, 2.7, 1.55, 1.73, 2.1,
              1.33, 1.15, 1.55, 1.92, 1.64, 1.91, 1.33, 1.71, 1.5, 1.35, 1.22, 1.77, 1.7, 1.87, 2.0, 1.55, 1.73, 2.1]
x = len(mas)


class MainWindow(QtWidgets.QMainWindow):
    def __init__(self, parent=None):
        super().__init__(parent)
        self.mdi = QMdiArea()
        self.setCentralWidget(self.mdi)
        for title in ["Data:1", "Data:2", "Data:3", "Data:n"]:
            mdiChild  = QMdiSubWindow()
            mdiChild.setWindowTitle(title)
            self.mdi.addSubWindow(mdiChild)
        self.mdi.tileSubWindows()
        self.setCentralWidget(self.mdi)
        self.updateActiveChild(self.mdi.activeSubWindow())
        # install signal handlers
        self.mdi.subWindowActivated.connect(self.updateActiveChild)


    def updateActiveChild(self, subWindow):
        self.area = self.mdi.subWindowList()

        self._chart_view = QtChart.QChartView()
        self.central_widget = QtWidgets.QWidget()

        self.area[3].setWidget(self.central_widget)
        self.lay = QtWidgets.QVBoxLayout(self.central_widget)
        self.lay.addWidget(self._chart_view)
        self._chart = QtChart.QChart()
        self._line_serie = QtChart.QLineSeries()

        for i in range(0, len(mas)):
            self._line_serie.append(QtCore.QPointF(i, mas[i]))

        self._chart.addSeries(self._line_serie)
        self._chart_view.setChart(self._chart)
        self.show()


if __name__ == "__main__":
    import sys

    app = QtWidgets.QApplication(sys.argv)
    w = MainWindow()
    w.show()
    sys.exit(app.exec_())

Tags: importselfviewdatalinechartwidgetmas
1条回答
网友
1楼 · 发布于 2024-06-16 10:16:34

您只为一个子窗口创建图表,请为所有子窗口创建图表

class MainWindow(QtWidgets.QMainWindow):
    def __init__(self, parent=None):
        super().__init__(parent)
        self.mdi = QMdiArea()
        self.setCentralWidget(self.mdi)
        for title in ["Data:1", "Data:2", "Data:3", "Data:n"]:
            mdiChild  = QMdiSubWindow()
            mdiChild.setWindowTitle(title)
            self.mdi.addSubWindow(mdiChild)
            
            self._chart_view = QtChart.QChartView()
            self.central_widget = QtWidgets.QWidget()

            mdiChild.setWidget(self.central_widget)
            self.lay = QtWidgets.QVBoxLayout(self.central_widget)
            self.lay.addWidget(self._chart_view)
            self._chart = QtChart.QChart()
            self._line_serie = QtChart.QLineSeries()

            for i in range(0, len(mas)):
                self._line_serie.append(QtCore.QPointF(i, mas[i]))

            self._chart.addSeries(self._line_serie)
            self._chart_view.setChart(self._chart)
        self.mdi.tileSubWindows()
        self.show()

相关问题 更多 >