首页 > 解决方案 > Qt 未在远程桌面上加载(无法初始化 XRandr)

问题描述

我正在使用 Python 3.8 linux 安装在远程桌面 (VNC) 上运行基于 PySide2 的 Python GUI,并遇到了一些问题。

GUI确实会弹出并显示可操作,但是,命令提示符会显示以下错误:

qt.qpa.xcb: failed to initialize XRandr
qt.qpa.xcb: X server does not support XInput 2
qt.qpa.xcb: QXcbConnection: XCB error: 1 (BadRequest), sequence: 168, resource id: 53,
major code: 131 (Unknown), minor code: 47

我没有管理员/root 访问权限,并且 DISPLAY 环境变量似乎设置为:3.0 (DISPLAY=:3.0) (DISPLAYNUM=3)。

这似乎不应该是一个限制,因为我可以在远程查看器中运行其他软件界面。

我不知道这是否是预期的用例,但是,我尝试在命令行调用 Python GUI 之后附加一个平台 VNC 标志:

/usr/python/linux/bin/python /usr/python/linux/scripts/GUI.py -platform vnc

从这里,错误消息消失了,我得到:

QVncServer created on port 5900

但是,这次没有显示 GUI 或窗口。这也是使用屏幕外或最小选项的情况。

标签: pythonpython-3.xqtpyqtvnc

解决方案


  1. 默认情况下,您的 Qt 应用程序作为您配置为 VNC 服务器的 X 服务器的客户端运行。Qt 应用程序不关心也不知道任何 VNC。它与 X 服务器交互,然后服务器如何将屏幕暴露给世界是无关紧要的事情。您看到的错误可能无关紧要。

  2. 当您使用 VNC 平台插件时,您的 Qt 应用程序本身就变成了 VNC 服务器——它不再使用 X 服务器。屏幕上不会“出现”任何内容,因为没有屏幕。提供屏幕由您决定:使用 VNC 客户端连接到它 :)


推荐阅读