pyqtgraph grabFrameBuffer保存一张空图片

pyqtgraph grabFrameBuffer saves an empty image

我有一个 3D 渲染图,看起来像我正在尝试保存的下图。然而,图像是黑色的,没有绘制任何东西,我不确定为什么。我正在按照此处 https://pyqtgraph.readthedocs.io/en/latest/exporting.html#exporting-3d-graphics 提供的指南进行操作,但没有提供很多帮助。它只是写 glview.grabFrameBuffer().save('fileName.png')

下面是代码的重要部分。我用单线渲染替换了渲染线和点云的部分。

import pyqtgraph.opengl as gl

from pyqtgraph.Qt import QtWidgets

if __name__ == '__main__':
    
    # initialize screen
    app = QtWidgets.QApplication(sys.argv)
    w = gl.GLViewWidget()
    
    line = np.array([[0,0,0],[1,1,1]])
    line_renderer = gl.GLLinePlotItem(pos=line, width=1, antialias=False)
    w.addItem(line_renderer)
    
    g = gl.GLGridItem()
    w.addItem(g)
    w.show()
    w.grabFrameBuffer().save('fileName.png')
    app.exec()

grabFrameBuffer() 根据 GLViewWidget 中显示的内容创建一个 QImage,但是指令的呈现不是即时的,您必须等待 Qt 来完成。考虑到上述情况,解决方案是稍后使用 QTimer 来完成此任务:

QtCore.QTimer.singleShot(100, lambda: w.grabFrameBuffer().save("fileName.png"))