问题

设备:NVIDIA Jetson Xavier NX Developer Kit 8GB

系统:Ubuntu 20.04 / JetPack 5.1.3 / L4T 35.5.0

环境:Python 3.8(Default) / PyQt6.7.1 / PyQt6-Qt6 6.7.2

由于最近写的一个PyQt6程序(使用PyQt6库)在GNOME桌面上有图形问题(无法正确显示视频播放器画面),因此切换到了xfce4桌面,但运行的时候GUI完全不显示了,报错内容如下:

qt.glx: qglx_findConfig: Failed to finding matching FBConfig for QSurfaceFormat(version 2.0, options QFlags<QSurfaceFormat::FormatOption>(), depthBufferSize -1, redBufferSize 1, greenBufferSize 1, blueBufferSize 1, alphaBufferSize -1, stencilBufferSize -1, samples -1, swapBehavior QSurfaceFormat::SingleBuffer, swapInterval 1, colorSpace QColorSpace(), profile  QSurfaceFormat::NoProfile)
qt.glx: qglx_findConfig: Failed to finding matching FBConfig for QSurfaceFormat(version 2.0, options QFlags<QSurfaceFormat::FormatOption>(), depthBufferSize -1, redBufferSize 1, greenBufferSize 1, blueBufferSize 1, alphaBufferSize -1, stencilBufferSize -1, samples -1, swapBehavior QSurfaceFormat::SingleBuffer, swapInterval 1, colorSpace QColorSpace(), profile  QSurfaceFormat::NoProfile)
qt.glx: qglx_findConfig: Failed to finding matching FBConfig for QSurfaceFormat(version 2.0, options QFlags<QSurfaceFormat::FormatOption>(), depthBufferSize -1, redBufferSize 1, greenBufferSize 1, blueBufferSize 1, alphaBufferSize -1, stencilBufferSize -1, samples -1, swapBehavior QSurfaceFormat::SingleBuffer, swapInterval 1, colorSpace QColorSpace(), profile  QSurfaceFormat::NoProfile)
Could not initialize GLX
Aborted (core dumped)

解决方法

此问题是由于默认的QT_XCB_GL_INTEGRATION=glx导致的,将其切换为xcb_egl即可解决(如果仍然不行,可以切换为none尝试,但此时将完全使用CPU而不会使用GPU,在资源受限的机器上会造成CPU高负载影响其他任务

export QT_XCB_GL_INTEGRATION=xcb_egl     # 切换为xcb_egl
python3 main.py                          # 尝试运行

但直接export只能临时解决,若要固化此更改,需要修改~/.bashrc

nano ~/.bashrc

在最后填入:

export QT_XCB_GL_INTEGRATION=xcb_egl

保存退出。

立即生效:

source ~/.bashrc