Please refresh the page if equations are not rendered correctly.
---------------------------------------------------------------
配置开发环境
基于PyQT的工业软件界面制作保姆级教程 | 环境搭建_工业软件界面设计-CSDN博客
界面与绘图逻辑分离的代码示例
- 创建一个单独的绘图类
PlotWidget
,负责处理与绘图相关的所有逻辑。 - 在
MainWindow
类中调用PlotWidget
进行图形显示。
import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QVBoxLayout, QWidget, QPushButton
import pyqtgraph as pg
# 创建一个绘图小部件类,负责处理所有绘图相关的逻辑
class PlotWidget(QWidget):
def __init__(self, parent=None):
super().__init__(parent)
self.layout = QVBoxLayout(self)
# 创建 pyqtgraph 的绘图窗口
self.plot_widget = pg.GraphicsLayoutWidget()
self.layout.addWidget(self.plot_widget)
# 初始化图表和曲线
self.plots = []
self.curves = []
# 调用函数来创建绘图
self.create_plots()
def create_plots(self):
"""Create a simple plot inside the pyqtgraph widget."""
for i in range(3): # 假设我们有 3 个信号要绘制
plot = self.plot_widget.addPlot(title=f"Signal {i + 1}")
plot.setLabel('left', 'Voltage', units='V') # 设置Y轴标签
plot.setLabel('bottom', 'Time', units='s') # 设置X轴标签
plot.showGrid(x=True, y=True) # 显示网格
curve = plot.plot(pen=pg.intColor(i)) # 创建曲线
self.plots.append(plot)
self.curves.append(curve)
self.plot_widget.nextRow() # 添加下一行
def update_plot(self, data_list):
"""Update the curves with new data."""
for i, data in enumerate(data_list):
self.curves[i].setData(data) # 更新曲线数据
# 创建主窗口类,负责处理 PyQt5 界面
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
self.setWindowTitle("PyQt5 with Embedded PyQtGraph")
self.resize(1200, 800)
# 创建一个中央小部件
central_widget = QWidget()
self.setCentralWidget(central_widget)
# 创建一个垂直布局
layout = QVBoxLayout()
# 创建 PlotWidget 对象,并将其添加到布局中
self.plot_widget = PlotWidget(self)
layout.addWidget(self.plot_widget)
# 添加一个关闭所有串口和文件的按钮
close_button = QPushButton("Close All")
close_button.clicked.connect(self.close_all)
layout.addWidget(close_button)
# 设置布局到中央小部件
central_widget.setLayout(layout)
def close_all(self):
"""Close all resources (for example: files, serial ports, etc.)."""
print("Closing all resources...")
# PyQt5 应用程序的入口
if __name__ == '__main__':
app = QApplication(sys.argv)
main_window = MainWindow()
main_window.show()
sys.exit(app.exec_())
代码说明:
PlotWidget
类:负责所有绘图相关的操作,包括创建图形窗口、绘制曲线和更新数据。PlotWidget
被封装为一个继承自 QWidget
的类,便于嵌入到任何 PyQt 界面中。
MainWindow
类:负责创建主界面,嵌入 PlotWidget
,并处理与界面相关的其他逻辑,如关闭按钮功能。
其他资源:
pyqtgraph嵌入已经设计好的界面中&&动态绘图_pyqt5graph嵌入pyqt5绘制动态曲线-CSDN博客 (未验证)
Comments NOTHING