Пользовательские QWidgets. Как мне собрать / получить плагин pyqt5 для Qt Designer на Mac?

Я хочу иметь возможность создавать свои собственные виджеты в Qt Designer, используя плагин pyqt5 на моем Mac!

В моей системе Windows это легко. У меня есть /install pyqt5-tools, он содержит pyqt5.dll, и я копирую его в каталог плагинов Qt Designers (все эти пакеты были установлены через winPython).

  • Я установил PYQTDESIGNERPATH=.
  • В моем текущем каталоге у меня есть ledplugin.py и ledwidget.py
  • Я запускаю Qt Designer, и у меня есть свой виджет для перетаскивания

(это руководство было взято с https://www.ics.com/blog/integrating-python-based-custom-widget-qt-designer)

На моем Mac я не могу понять, что такое эквивалент.dylib файла pyqt5.dll? Что это? Где это взять? Как мне это построить?

Я пытаюсь: brew install Qt Creator, у которого нет плагина pyqt. Я пытаюсь: brew установить pyqt5, который создает: libpyqt5qmlplugin.dylib. Я копирую это в каталог плагинов Qt Designer, и плагин загружается, но он, похоже, ничего не делает с моими файлами плагинов / виджетов.py.

Как мне заставить это работать на Mac? Какой именно плагин.dylib я ищу? Я не могу найти что-нибудь, гуглящее вокруг.

Спасибо за любую помощь

1 ответ

Решение

Как пояснил мой комментарий: плагин Qt Designer может быть собран через ссылку (SIP/PyQt5 через RiverBank и Qt src через Qt).

  • Убедитесь, что ваши версии Qt совпадают, хотя в документации по Qt сказано, что плагины более ранних версий должны работать с дизайнерами более высоких версий, но я уверен, что есть предел.
  • Сборка внутри python venv, как и предлагалось.
  • Вам понадобится xtool dev pkg для сборки.
  • Все построено очень легко для меня.
  • Это поместит ваш плагин pyqt5.dylib прямо в вашу папку Qt/clang_64/plugins/designer (он также соберет его в папку pyqt5 make)

На данный момент я ожидал, что все будет работать. Плагин показывает, что он прекрасно загружается в Designer.

Некоторые дополнительные заметки:

  • запуск из командной строки может помочь с отладкой: Qt/clang_64/bin/Designer.app > show package > /MacOS/Designer (перетащите его в терминал для выполнения из командной строки)
  • установка переменной env (>>export QT_DEBUG_PLUGINS=1) выдаст отладочную информацию и покажет множество вещей, включая то, что pyqt5.dylib загружается нормально
  • Плагины виджетов - это два файла: widget.py и файл widgetplugin.py, который предоставляет виджет дизайнеру. Этот файл плагина ДОЛЖЕН заканчиваться на "plugin.py"
  • Файлы widgetplugin.py могут находиться в нескольких местах:
    • в /[Designer App]/ плагины / дизайнер / python /
    • в ~/user dir/.designer/plugins/python/
    • в выбранном вами каталоге с помощью env var PYQTDESIGNERPATH

Тем не менее, в этот момент в Designer все еще ничего не показывалось, и у меня не было никаких ошибок. Так как я только что построил pyqt5.dylib, я решил, что я просто поместил в него кучу операторов print, заново сделал его и отладил, чтобы выяснить, почему плагин pyqt5 загружался нормально, но мои пользовательские виджеты нигде не были найдены..,

  • Первой проблемой была проблема с загрузкой среды Python:
    • для этой проблемы я просто скопировал мой (я использую brew) /usr/local/Cellar/python/3.7.2/Frameworks/Python.framework в Qt/clang_64/lib (я уверен, что вы можете выбрать подходящий PATH/PYTHONPATH установи для этого, разберусь позже)
  • после этого пришел отсутствующий модуль PyQt5.sip
    • для этого я установил (pip install) pyqt5-sip и вставил в свою PYTHONPATH

После этого все наконец заработало, и я смог увидеть мои собственные плагины внутри Qt Designer.

Другие вопросы по тегам