Eclipse外部工具将Qt .ui转换为.py使用pyuic
我在Eclipse中使用PyDev,并且集成了Qt。通过一个外部工具,我可以把.qt文件转换成.py文件,也就是把Qt的界面文件变成Python源代码。这个外部工具的链接是:http://permalink.gmane.org/gmane.comp.python.xy.devel/413。现在的问题是,生成的Python文件名是MyGeneratedFile.ui.py。请问我该如何调整这个外部工具,让生成的文件名去掉.ui后缀,变成MyGeneratedFile.py呢?
3 个回答
这个问题有个简单的解决办法,根本不需要写代码。
在主设置里:
- 名称:可以叫pyuic_run(或者其他类似的名字)
- 位置:填入Python解释器的路径(如果你用的是pyside-uic.exe,就填这个的路径)
- 参数:第一行填入pyuic.py的路径(如果你用pyside-uic.exe就不需要填这个)。如果路径里有空格,要用双引号把路径括起来。第二行填入"${resource_loc}"(这会设置资源文件的名称)
- 在刷新选项里:勾选“完成后刷新资源”(这样可以看到最终生成的文件)
- 在构建选项里:取消勾选“启动前构建”#这里不需要
- 在环境选项里:不需要做任何更改
- 在公共选项里:勾选“文件”选项,并设置路径为: ${parent-path}/${name-sans-extension}.py
注意,${parent-path}和${name-sans-extension}是通过pathtools插件提供的参数。
如果你按照这些步骤操作,然后在一个.ui资源文件上运行这个配置,你会看到生成了一个新的.py文件。
为了保持Eclipse的跨平台特性,我写了一个类似于platinummonkey的bash脚本的DOS版本。虽然它没有那么强大,但也能完成任务:
@echo off
set pyUICCommand="pyuic"
set fname=%1
set fname=%fname:.ui=.py%
%pyUICCommand% -o %fname% %1
看起来问题主要出在 ${resource_loc} 上,因为它给你提供了完整的路径名 /path/to/file/filename.ui - 是的,它确实包含了 .ui 后缀,所以当你写 ${resource_loc}.py 时,这就变成了 /path/to/file/filename.ui.py
为了修正这个问题,我找不到让Eclipse自动去掉文件后缀的方法,所以我写了一个非常简单的脚本来解决这个问题。
你可能需要稍微修改一下这个脚本,以适应你的pyuic安装。
/usr/bin/pyuicEclipse:
#!/bin/bash
pyUICCommand="/usr/bin/pyuic" # change this per your installation
x=$1
f=`basename $x`
d=`dirname $x`
fNoUI="`echo $f | sed 's/\.ui$//'`" # removes .ui extension from file basename
$pyUICCommand -o ${d}/${fNoUI}.py $x
把它设置为可执行,然后我用的Eclipse配置就简单多了:
- PyUIC->Main->Location: /usr/bin/pyuicEclipse ---显然要改成你的路径
- PyUIC->Main->Arguments: ${resource_loc}
- PyUIC->Refresh - 勾选 "完成后刷新资源"
- PyUIC->Build - 取消勾选 "启动前构建"
- PyUIC->Common - 不要做那篇文章提到的文件选项
这个方法在Linux上有效,如果你用的是其他操作系统,可能需要稍微调整一下,但我希望这能解决你的问题 :)