无法获得自定义PyQt5小部件插件以显示在Qt设计器中(macos)

时间:2019-08-29 04:34:47

标签: python macos pyqt pyqt5 qt-designer

我想使用python(3.7和pyqt5)为Qt Designer创建一个自定义小部件插件。一切正常,但不会在Qt Designer中显示。

到目前为止,这是我经过反复尝试和其他类似问题(Qt Designer: could not find custom PyQt widget pluginsCustom QWidgets. How do I build/get the pyqt5 plugin for Qt Designer on Mac?)的帮助下所做的事情

  • 我从Qt网站安装了Qt Designer(Creator)5.13。

  • 我从源代码而非pip安装了SIP(4.9.18)和PyQt5(5.13.0),因为有必要获取必要的libpyqt5.dylib文件(对于Mac,没有pyqt5-tools)。我将此文件放在/Users/[user]/Qt/5.13.0/clang_64/plugins/designer目录

  • 我只想在制作自己的插件之前正确设置设置。因此,我从https://github.com/baoboa/pyqt5/tree/master/examples/designer/plugins下载了analogclock.py和analogclockplugin.py,并修改了plugins.py文件,如下所示:

from PyQt5.QtCore import QLibraryInfo, QProcess, QProcessEnvironment


# Tell Qt Designer where it can find the directory containing the plugins and
# Python where it can find the widgets.
env = QProcessEnvironment.systemEnvironment()
env.insert('PYQTDESIGNERPATH', '[path to the plugin.py files]/designer_plugins')
env.insert('PYTHONPATH', '[path to the widgets]/designer_widgets')

# Start Designer.
designer = QProcess()
designer.setProcessEnvironment(env)
designer_bin = QLibraryInfo.location(QLibraryInfo.BinariesPath)

designer_bin = '/Users/[user]/Qt/5.13.0/clang_64/bin/Designer.app/Contents/MacOS/Designer'

designer.start(designer_bin)
designer.waitForFinished(-1)
  • 我运行了plugins.py。 Qt Designer正确打开,并且当我检查了Designer-> About Plugins时,我在Loaded Plugins中看到libpyqt5.dylib。但是,PyAnalogClock小部件不在其中,插件小部件不在左侧小部件框中。

  • 我试图通过这样在终端上设置环境变量进行调试:

[user]$ export QT_DEBUG_PLUGINS=1
[user]$ export PYQTDESIGNERPATH='[path to the widgets]/designer_widgets'
[user]$ export PYTHONPATH='[path to the widgets]/designer_widgets'

[user]$ /Users/[user]/Qt/5.13.0/clang_64/bin/Designer.app/Contents/MacOS/Designer

输出的相关部分是这样的:

Found metadata in lib /Users/[user]/Qt/5.13.0/clang_64/plugins/designer/libpyqt5.dylib, metadata=
{
    "IID": "org.qt-project.Qt.QDesignerCustomWidgetCollectionInterface",
    "archreq": 0,
    "className": "PyCustomWidgets",
    "debug": false,
    "version": 331008
}


loaded library "/Users/[user]/Qt/5.13.0/clang_64/plugins/designer/libpyqt5.dylib"

并一直到最后

loaded library "Python.framework/Versions/3.7/Python"
ModuleNotFoundError: No module named 'PyQt5'
ModuleNotFoundError: No module named 'PyQt5'
  • 当我没有从命令行导出PYQTDESIGNERPATH和PYTHONPATH时,此错误消失了。但是,当然,然后Qt不知道文件在哪里。

无论如何,这就是我目前的状态。我不明白为什么Qt Designer无法找到PyQt5模块,或者还有什么我可以尝试使其工作的。

1 个答案:

答案 0 :(得分:0)

这里是?‍♂️妈妈 因此,我在PyQt参考指南中发现了这一点,而我却以某种方式忽略了它

  • 有关定义新的Qt信号,插槽和属性及其插件的自定义窗口小部件的简单但完整的文档,请查看PyQt5源程序包的examples / designer / plugins目录

好。做过某事。运行演示。它工作正常。将整个插件目录复制到其他位置。还可以所以我一定做了一些时髦的命名文件夹之类的事情。无论如何,现在我将致力于制作自己的插件。由于愚蠢而沮丧的日子。但是很高兴。