2013-08-25 123 views
23

有没有办法将使用qtDesigner生成的用户界面转换为无需额外文件即可使用的Python版本?将pyQt UI转换为python

我正在使用Maya进行此UI,并将此UI文件转换为可执行的可读蟒蛇版本将非常棒!

+0

在堆栈: http://stackoverflow.com/questions/2398800/linking-a-qtdesigner-ui -file-to-python-pyqt –

回答

35

您可以在外壳使用pyuic4命令: pyuic4 input.ui -o output.py

+0

如何安装pyuic4?这是说'pyuic4'不被识别,我假设我必须安装它? –

+0

您必须安装Qt和PyQt(或Pyside)才能使用'pyuic4'工具,它可以将您的ui文件转换为Python文件。 – Frodon

+3

我知道这是一个老问题,但在其他人想知道的情况下,要在Ubuntu上安装pyuic4:'sudo apt-get install pyqt4-dev-tools qt4-designer' –

2

我不确定PyQt是否有这样的脚本,但是在安装PySide之后,在pythons脚本目录“uic.py”中有一个脚本。你可以使用这个脚本到的.ui文件转换为.py文件:

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

我是否从maya或命令行执行此操作? –

+0

你有没有看到我的回应? –

+0

在某些系统上,这可能被称为pyside-uic并且是可执行的。顺便说一句,是的,它将从命令行运行,因为它用于任何应用程序开发,而不仅仅是Maya。 – Ben

8

如果您使用的是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 
0

我最近遇到了同样的问题。找到正确的路径使用文件查找器我已经跑了:

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

正如你可以看到我的UI文件放在这个文件夹中...

Qt Creator的是单独安装和pyuic4文件与OSGEO4W安装

1

你不要摆在那里不得不安装PyQt4的所有功能,你只需要PyQt4软件包本身。在包内,你可以使用模块pyuic.py(“C:\ Python27 \ Lib \ site-packages \ PyQt4 \ uic”)来转换你的Ui文件。

C:\测试>蟒蛇C:\ Python27x64 \ LIB \站点包\ PyQt4的\ UIC \ pyuic.py -help

您将得到所有的选项列出:

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文件实现它们。这使得稍后编辑它变得更加舒适。你也可以编写你自己的Widget插件,并将它们加载到Qt设计器中,并具有完全访问权限。让你的UI硬编码不会使它变得非常灵活。

我重用了很多我的用户界面,不仅在Maya中,还用于Max,Nuke等。如果您必须更改特定软件的某些东西,您应该尝试继承该类(使用父文件)更全局的观点和补丁或覆盖你必须调整的方法。这节省了大量的工作时间。如果您对此有更多疑问,请告诉我。

1

将.ui转换为最快的方法。PY是从终端:

pyuic4 -x input.ui -o output.py

确保已安装PyQt4的-DEV-工具。

1

这个问题已经得到解答,但是如果你在开发过程中寻找一个快捷方式,包括这个在你的python脚本的顶部会节省你一些时间,但主要是让你忘记了实际上必须进行转换。

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

对于pyqt5可以使用

pyuic5 xyz.ui > xyz.py 

pyuic5 xyz.ui -o xyz.py