pyqtgraph中QApplication与GraphicsWindow报错问题求助
PyQtGraph v0.13.1 兼容问题解决办法
问题根源
- PyQtGraph 0.10+版本调整了Qt模块的组织结构,
QApplication不再属于pyqtgraph.Qt.QtGui,而是移到了pyqtgraph.Qt.QtWidgets(对应Qt5/Qt6的模块划分规则) GraphicsWindow已被标记为废弃,新版本官方推荐使用GraphicsLayoutWidget或PlotWidget替代
具体修复步骤
1. 修复QApplication的导入与初始化
原代码片段:
from pyqtgraph.Qt import QtGui, QtCore app = QtGui.QApplication([])
替换为:
from pyqtgraph.Qt import QtWidgets, QtCore app = QtWidgets.QApplication([])
如果需要兼容新旧PyQtGraph版本,可添加兼容判断:
from pyqtgraph.Qt import QtCore, QtGui, QtWidgets app = QtWidgets.QApplication([]) if hasattr(QtWidgets, 'QApplication') else QtGui.QApplication([])
2. 替换废弃的GraphicsWindow
原代码片段:
win = pg.GraphicsWindow(title="plotting")
改为使用GraphicsLayoutWidget(多子图场景推荐):
win = pg.GraphicsLayoutWidget(title="plotting") # 后续添加绘图区域的逻辑和原代码一致,比如: plot = win.addPlot(title="Heart Rate Signal")
如果只需要单个绘图区域,也可以直接用PlotWidget:
win = pg.PlotWidget(title="plotting")
原代码逻辑说明
你运行的是一个基于摄像头的心率检测工具,核心流程为:
- 从摄像头捕获视频帧
- 提取帧中颜色通道的变化信号(对应血液流动带来的肤色细微变化)
- 对信号做滤波、峰值检测等处理得到心率数据
- 用PyQtGraph实时绘制处理后的信号
替换上述两处兼容问题代码后,其余信号处理和绘图逻辑可直接保留,无需大幅修改。
内容的提问来源于stack exchange,提问作者Gordon Freeman
相关产品推荐
相关产品推荐

