python - 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 或窗口。这也是使用屏幕外或最小选项的情况。
解决方案
默认情况下,您的 Qt 应用程序作为您配置为 VNC 服务器的 X 服务器的客户端运行。Qt 应用程序不关心也不知道任何 VNC。它与 X 服务器交互,然后服务器如何将屏幕暴露给世界是无关紧要的事情。您看到的错误可能无关紧要。
当您使用 VNC 平台插件时,您的 Qt 应用程序本身就变成了 VNC 服务器——它不再使用 X 服务器。屏幕上不会“出现”任何内容,因为没有屏幕。提供屏幕由您决定:使用 VNC 客户端连接到它 :)
推荐阅读
- c# - 我可以在 Unity 中使用预处理器指令来区分调试和发布模式吗
- excel - Excel 宏 - 如何自动将趋势线从图表复制到单元格
- java - 我可以在流式传输时将新对象添加到集合吗?
- amazon-web-services - 入口主机中的变量转移到服务名称
- http - 如何使用 URL 从 Ionic 向 Yii2 发出 POST 请求
- angular - 将所有 FromGroup 控件值传递给另一个 FormGroup
- bash - 跟踪 pg_dump 进程 id 并在失败时触发错误
- r - 为什么我需要在 Spark 中缩放之前组装矢量?
- r - 在具有精确标准且没有 for 循环的嘈杂数据中查找局部最小值
- angular - 如何正确地将不可观察的转换为可观察的?