You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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")

原代码逻辑说明

你运行的是一个基于摄像头的心率检测工具,核心流程为:

  1. 从摄像头捕获视频帧
  2. 提取帧中颜色通道的变化信号(对应血液流动带来的肤色细微变化)
  3. 对信号做滤波、峰值检测等处理得到心率数据
  4. 用PyQtGraph实时绘制处理后的信号

替换上述两处兼容问题代码后,其余信号处理和绘图逻辑可直接保留,无需大幅修改。

内容的提问来源于stack exchange,提问作者Gordon Freeman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 09:30:59