| 28 | |
| 29 | |
| 30 | class DynamicSpline(QChart): |
| 31 | def __init__(self): |
| 32 | super().__init__() |
| 33 | self.m_step = 0 |
| 34 | self.m_x = 5 |
| 35 | self.m_y = 1 |
| 36 | # 初始化图像 |
| 37 | self.series = QSplineSeries(self) |
| 38 | green_pen = QPen(Qt.red) |
| 39 | green_pen.setWidth(3) |
| 40 | self.series.setPen(green_pen) |
| 41 | self.axisX = QValueAxis() |
| 42 | self.axisY = QValueAxis() |
| 43 | self.series.append(self.m_x, self.m_y) |
| 44 | |
| 45 | self.addSeries(self.series) |
| 46 | self.addAxis(self.axisX, Qt.AlignBottom) |
| 47 | self.addAxis(self.axisY, Qt.AlignLeft) |
| 48 | self.series.attachAxis(self.axisX) |
| 49 | self.series.attachAxis(self.axisY) |
| 50 | self.axisX.setTickCount(5) |
| 51 | self.axisX.setRange(0, 10) |
| 52 | self.axisY.setRange(-5, 10) |
| 53 | |
| 54 | self.timer = QTimer(self) |
| 55 | self.timer.setInterval(1000) |
| 56 | self.timer.timeout.connect(self.handleTimeout) |
| 57 | self.timer.start() |
| 58 | |
| 59 | def handleTimeout(self): |
| 60 | x = self.plotArea().width() / self.axisX.tickCount() |
| 61 | y = (self.axisX.max() - self.axisX.min()) / self.axisX.tickCount() |
| 62 | self.m_x += y |
| 63 | # 在PyQt5.11.3及以上版本中,QRandomGenerator.global()被重命名为global_() |
| 64 | self.m_y = QRandomGenerator.global_().bounded(5) - 2.5 |
| 65 | self.series.append(self.m_x, self.m_y) |
| 66 | self.scroll(x, 0) |
| 67 | if self.m_x >= 100: |
| 68 | self.timer.stop() |
| 69 | |
| 70 | |
| 71 | if __name__ == "__main__": |