在让 PyQt5 + venv + qt5ct 正常运行时遇到问题

Having issues getting PyQt5 + venv + qt5ct to play nicely

我正在开发一个 PyQT5 小应用程序,我想在虚拟环境中 运行。现在,已经创建了一个 venv,并使用 pip 将所有必需的包安装到 venv 中,应用程序 运行ning,并且通常工作正常。

但是,我在主题设置方面遇到了问题。现在,我使用 qt5ct 在我的计算机上管理我的 QT 主题,但不幸的是,这似乎并没有在 venv 中被接受。如果我 运行 应用程序在 venv 之外,控制台输出的第一行是 qt5ct: using qt5ct plugin 并且应用程序的样式是根据我在 qt5ct 中的选择。然而,当 运行ning 在 venv 中时,我没有得到这样的行,并且所有内容都有默认样式。

现在,我已经从虚拟环境中打印 os.environ['QT_QPA_PLATFORMTHEME'] 并验证其设置为 qt5ct 是应该的。似乎 qt5ct 根本没有被执行,我试图在我的 venv bin 文件夹中符号链接 qt5ct 可执行文件,但是,它没有任何帮助。

有人知道如何使用 qt5ct 设置在 python3-venv 中应用于 pyqt5 应用程序 运行ning 吗?

编译qt5ct时生成3个文件:

  • qt5ct
  • libqt5ct.so:
  • libqt5ct-style.so

第一个是允许您配置qt5ct 的应用程序,其他是插件。要使 qt5ct 与从 pypi 安装的 PyQt5 一起工作,您必须将 libqt5ct.so 和 libqt5ct-style.so 复制到:

  • /path/of/your_venv/lib/python3.7/site-packages/PyQt5/Qt/plugins/platformthemes/libqt5ct.so
  • /path/of/your_venv/lib/python3.7/site-packages/PyQt5/Qt/plugins/styles/libqt5ct-style.so

分别

如果您使用 pacman 安装了 qt5ct,那么您必须使用以下步骤:

$ cp /usr/lib/qt/plugins/platformthemes/libqt5ct.so /path/of/your_venv/lib/python3.7/site-packages/PyQt5/Qt/plugins/platformthemes/
$ mkdir /path/of/your_venv/lib/python3.7/site-packages/PyQt5/Qt/plugins/styles/
$ cp /usr/lib/qt/plugins/styles/libqt5ct-style.so /path/of/your_venv/lib/python3.7/site-packages/PyQt5/Qt/plugins/styles/

其中 /path/of/your_venv 是你的 venv 的路径。