Преобразование pyQt UI в python

есть ли способ преобразовать пользовательский интерфейс, сформированный с помощью qtDesigner, в версию python для использования без дополнительного файла?

Я использую Maya для этого пользовательского интерфейса, и преобразование этого файла пользовательского интерфейса в читаемую версию python для реализации было бы действительно здорово!

9 ответов


можно использовать pyuic4 команда на оболочке: pyuic4 input.ui -o output.py


Если вы используете windows, папка PyQt4 не находится в пути по умолчанию, вы должны перейти к нему, прежде чем пытаться запустить его:

c:\Python27\Lib\site-packages\PyQt4\something> pyuic4.exe full/path/to/input.ui -o full/path/to/output.py

или вызовите его, используя полный путь

full/path/to/my/files> c:\Python27\Lib\site-packages\PyQt4\something\pyuic4.exe input.ui -o output.py

Я не уверен, что PyQt имеет такой скрипт, но после установки PySide в каталоге pythons есть скрипт "uic.py". Вы можете использовать этот скрипт для преобразования a .ui файл в a .файл py:

python uic.py input.ui -o output.py -x

для pyqt5 вы можете использовать

pyuic5 xyz.ui > xyz.py 

или

pyuic5 xyz.ui -o xyz.py

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

import os #Used in Testing Script
os.system("pyuic4 -o outputFile.py inpuiFile.ui")

самый быстрый способ преобразования .ui to .py от терминала:

pyuic4 -x input.ui -o output.py

убедитесь, что у вас установлен pyqt4-dev-tools.


вам не нужно устанавливать PyQt4 со всеми его боковыми функциями, вам просто нужен сам пакет PyQt4. Внутри пакета вы можете использовать модуль pyuic.py ("C:\Python27\Lib\site-packages\PyQt4\uic") для преобразования файла пользовательского интерфейса.

C:\test > python C:\Python27x64\Lib\site-packages\PyQt4\uic\pyuic.py -помогите!--3-->

вы получите все перечисленные варианты:

Usage: pyuic4 [options] <ui-file>

Options:
  --version             show program's version number and exit
  -h, --help            show this help message and exit
  -p, --preview         show a preview of the UI instead of generating code
  -o FILE, --output=FILE
                        write generated code to FILE instead of stdout
  -x, --execute         generate extra code to test and display the class
  -d, --debug           show debug output
  -i N, --indent=N      set indent width to N spaces, tab if N is 0 [default:
                        4]
  -w, --pyqt3-wrapper   generate a PyQt v3 style wrapper

  Code generation options:
    --from-imports      generate imports relative to '.'
    --resource-suffix=SUFFIX
                        append SUFFIX to the basename of resource files
                        [default: _rc]

поэтому ваша команда будет выглядеть так:

C:\test>python C:\Python27x64\Lib\site-packages\PyQt4\uic\pyuic.py test_dialog.ui -o test.py -x

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

почему вы хотите преобразовать его в любом случае? Я предпочитаю создавать виджеты в дизайнере и реализовывать их с помощью *.файл UI. Это делает его более удобным для редактирования позже. Вы также можете написать свои собственные плагины виджетов и загрузить их в Qt Designer с полным доступом. Наличие жесткого кода вашего пользовательского интерфейса не делает его очень гибким.

Я повторно использую много моего пользовательского интерфейса не только в Maya, также для Max, Nuke и т. д.. Если у вас есть чтобы изменить что-то конкретное программное обеспечение, вы должны попытаться наследовать класс (с родительским файлом ui) с более глобальной точки зрения и исправить или переопределить методы, которые вы должны настроить. Это экономит много рабочего времени. Дайте мне знать, если у вас возникнут еще вопросы.


обновление для тех, кто использует PyQt5 с python 3.x:

  1. открыть терминал (например. Powershell, cmd и т. д.)
  2. cd в папку с вашим .
  3. тип: "C:\python\Lib\site-packages\PyQt5\pyuic5.bat" -x Trial.ui -o trial_gui.py для случаев, когда PyQt5 не является переменной пути. Путь в кавычках "" представляет, где это.

Это должно работать!


недавно я столкнулся с той же проблемой. После поиска правильного пути к файлу pyuic4 с помощью File finder я запустил:

C:\Users\ricckli.qgis2\python\plugins\qgis2leaf>C:\OSGeo4W64\bin\pyuic4 -o ui_q gis2leaf.py ui_qgis2leaf.ui

Как вы можете видеть мой файл UI был помещен в эту папку...

Qt Creator был установлен отдельно, и файл pyuic4 был помещен туда с установщиком OSGEO4W