写用pyside2和qchart实时显示曲线的程序
时间: 2023-09-15 16:24:34 浏览: 172
pyside2 显示进度条
好的,下面是一个使用PySide2和QChart实时显示曲线的程序:
```python
import sys
import random
from PySide2.QtCore import Qt, QTimer
from PySide2.QtGui import QPen
from PySide2.QtCharts import QtCharts
from PySide2.QtWidgets import QApplication, QMainWindow, QGraphicsScene, QGraphicsView
class RealTimeChart(QMainWindow):
def __init__(self):
super().__init__()
# 创建QChart对象并设置标题
self.chart = QtCharts.QChart()
self.chart.setTitle("Realtime Chart")
# 创建QLineSeries对象并将其添加到QChart中
self.series = QtCharts.QLineSeries()
self.chart.addSeries(self.series)
# 创建QValueAxis对象并设置范围
self.axis_x = QtCharts.QValueAxis()
self.axis_x.setRange(0, 100)
self.chart.addAxis(self.axis_x, Qt.AlignBottom)
# 创建QValueAxis对象并设置范围
self.axis_y = QtCharts.QValueAxis()
self.axis_y.setRange(-1, 1)
self.chart.addAxis(self.axis_y, Qt.AlignLeft)
# 将QLineSeries与QValueAxis关联
self.series.attachAxis(self.axis_x)
self.series.attachAxis(self.axis_y)
# 创建QGraphicsScene对象并将QChart添加到场景中
self.view = QGraphicsView()
self.scene = QGraphicsScene()
self.scene.addItem(self.chart)
self.view.setScene(self.scene)
# 创建定时器,每隔一段时间更新曲线
self.timer = QTimer(self)
self.timer.timeout.connect(self.update_chart)
self.timer.start(50)
# 设置窗口大小和标题
self.setCentralWidget(self.view)
self.setGeometry(100, 100, 800, 600)
self.setWindowTitle("Realtime Chart")
def update_chart(self):
# 随机生成一个数据点并添加到曲线中
x = self.series.count()
y = random.uniform(-1, 1)
self.series.append(x, y)
# 移动坐标轴显示最近的数据
self.axis_x.setRange(x - 100, x)
self.view.fitInView(self.chart, Qt.IgnoreAspectRatio)
if __name__ == '__main__':
app = QApplication(sys.argv)
chart = RealTimeChart()
chart.show()
sys.exit(app.exec_())
```
这个程序会随机生成一个数据点,并将其添加到QLineSeries中。每隔50毫秒,定时器会调用update_chart()方法来更新曲线。在update_chart()方法中,我们还移动了坐标轴,以便始终显示最近的数据点。最后,我们将QChart添加到QGraphicsScene中,并在QGraphicsView中显示它。运行程序后,你应该能看到一个实时更新的曲线。
阅读全文