Windows从PyCharm转发PyQt5 GUI

时间:2019-05-15 22:44:42

标签: python pycharm pyqt5 x11-forwarding

我使用PyQt5开发了一个简单的GUI,我想使用远程主机部署工具在PyCharm的远程服务器上运行该GUI。下面提供了用于显示空白窗口的简单GUI的源代码。

import sys
from PyQt5.QtWidgets import QApplication, QWidget

if __name__ == '__main__':
    app = QApplication(sys.argv)
    w = QWidget()
    w.resize(250, 150)
    w.move(300, 300)
    w.setWindowTitle('Simple')
    w.show()
    sys.exit(app.exec_())

如果我使用X11转发(-Y)从终端SSH到该主机并运行GUI(python3 myapp.py),则该程序将正常运行,并且将出现空白窗口。但是,如果我从PyCharm(在远程主机上使用相同的Python解释器)运行程序,则会收到以下错误:

  

qt.qpa.plugin:即使找到了Qt平台插件“ xcb”,也无法将其加载到“”中。

     

此应用程序无法启动,因为无法初始化Qt平台插件。重新安装该应用程序可能会解决此问题。

     

可用的平台插件有:eglfs,linuxfb,minimum,minimlegl,offscreen,vnc,wayland-egl,wayland,wayland-xcomposite-egl,wayland-xcomposite-glx,webgl,xcb。

在PyCharm中,我正在使用在终端上使用ssh -Y在上述成功演示中测试过的同一Python解释器在远程主机上运行脚本。我还在PyCharm中的设置>构建,执行,部署>控制台> Python控制台>环境变量中设置环境变量。 SSH进入远程主机(localhost:10.0)时,我确保DISPLAY环境变量与DISPLAY变量匹配。我尝试将平台插件更改为推荐的其他插件之一(设置qt_qpa_platform环境变量),尽管某些平台插件未产生上述错误,但未出现预期的窗口。

我看到过类似的帖子,但有此错误,但是我认为重新安装pyqt或移动库路径的典型推荐解决方案不适用于这种情况,因为该程序可以在PyCharm外部运行。我认为PyCharm运行配置环境变量一定存在问题,但我相信我已正确设置了所有内容:

DISPLAY=localhost:10.0
PYTHONUNBUFFERED=1
QT_DIR=/usr/lib64/qt-3.3
QTINC=/usr/lib64/qt-3.3/include
QTLIB=/usr/lib64/qt-3.3/lib

谢谢您的指导。

1 个答案:

答案 0 :(得分:0)

我找到了解决自己问题的方法,但这不一定是理想的。如果使用前面提到的环境变量从PyCharm运行程序,并且我已经从终端使用.Index-gallery-item-content-heading, .Index-gallery-item-content-description { position: absolute; } .Index-gallery-item-content-heading { top: 0; } .Index-gallery-item-content-description { bottom: 0; } 连接到远程主机,则GUI窗口将显示无错误。如果我从终端取消了ssh连接,将无法从PyCharm执行程序。

此变通办法目前对我有用,我想将其发布,以防将来其他人偶然发现此问题,但是如果有人可以帮助我了解此变通办法的原因或解决方法,我将不胜感激。无需从终端打开单独的ssh连接。