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

PyQtGraph中GLViewWidget添加3D坐标轴标签报错解决问询

GLViewWidget添加坐标轴标签报错的解决方法(pyqtgraph 0.13.3 + PyQt6)

问题原因

你遇到的报错是因为原示例依赖的是PyQt5及更早版本的QGLWidgetAPI(qglColor、renderText都是旧版QGLWidget的方法),但PyQt6已经移除了这些旧API,且pyqtgraph 0.13.3的GLViewWidget底层基于QOpenGLWidget,不再支持这些旧方法,和版本无关,无需升级降级,只需调整绘制逻辑。

解决代码

修改paintGL方法,改用QPainter在OpenGL画布上绘制2D文本(适配PyQt6和当前pyqtgraph版本):

from pyqtgraph.opengl import GLViewWidget
from PyQt6.QtGui import QFont, QColor, QFontMetrics, QPainter
from PyQt6.QtWidgets import QApplication


class MyGLView(GLViewWidget):
    def __init__(self, parent=None):
        super().__init__(parent)

    def paintGL(self, *args, **kwargs):
        # 先完成3D场景绘制
        super().paintGL(*args, **kwargs)
        
        # 启用混合模式,让文本颜色正常显示
        self.makeCurrent()
        self.gl.glEnable(self.gl.GL_BLEND)
        self.gl.glBlendFunc(self.gl.GL_SRC_ALPHA, self.gl.GL_ONE_MINUS_SRC_ALPHA)

        # 初始化QPainter绘制2D文本
        painter = QPainter(self)
        painter.setRenderHint(QPainter.RenderHint.Antialiasing)

        font = QFont()
        font.setFamily("Tahoma")
        font.setPixelSize(21)
        font.setBold(True)
        painter.setFont(font)

        title_str = 'Screen Coordinates'
        metrics = QFontMetrics(font)
        text_width = metrics.boundingRect(title_str).width()
        text_height = metrics.boundingRect(title_str).height()

        # 计算文本居中位置
        scrn_width = self.size().width()
        x_pos = (scrn_width - text_width) // 2
        y_pos = text_height + 5

        # 设置文本颜色并绘制
        painter.setPen(QColor(255, 255, 0, 255))
        painter.drawText(x_pos, y_pos, title_str)

        # 结束绘制,恢复OpenGL状态
        painter.end()
        self.gl.glDisable(self.gl.GL_BLEND)
        self.doneCurrent()


app = QApplication([])
fig1 = MyGLView()
fig1.show()
app.exec()

关键说明

  • 先调用父类paintGL完成3D场景渲染,再用QPainter叠加绘制2D文本
  • 启用OpenGL混合模式是为了让文本的透明通道生效,避免出现色块
  • 使用QPainter的drawText替代旧的renderText,用setPen替代qglColor设置颜色

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 03:50:06