Eclipse外部工具将Qt .ui转换为.py使用pyuic

5 投票
3 回答
3486 浏览
提问于 2025-04-16 15:03

我在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 个回答

2

这个问题有个简单的解决办法,根本不需要写代码。

  1. 首先,安装 pathtools 插件,可以通过Eclipse更新或者在Eclipse市场里找到:

  2. 接下来,在Eclipse里设置一个外部工具配置,步骤如下:

在主设置里:

  1. 名称:可以叫pyuic_run(或者其他类似的名字)
  2. 位置:填入Python解释器的路径(如果你用的是pyside-uic.exe,就填这个的路径)
  3. 参数:第一行填入pyuic.py的路径(如果你用pyside-uic.exe就不需要填这个)。如果路径里有空格,要用双引号把路径括起来。第二行填入"${resource_loc}"(这会设置资源文件的名称)
  4. 在刷新选项里:勾选“完成后刷新资源”(这样可以看到最终生成的文件)
  5. 在构建选项里:取消勾选“启动前构建”#这里不需要
  6. 在环境选项里:不需要做任何更改
  7. 在公共选项里:勾选“文件”选项,并设置路径为: ${parent-path}/${name-sans-extension}.py

注意,${parent-path}和${name-sans-extension}是通过pathtools插件提供的参数。

如果你按照这些步骤操作,然后在一个.ui资源文件上运行这个配置,你会看到生成了一个新的.py文件。

5

为了保持Eclipse的跨平台特性,我写了一个类似于platinummonkey的bash脚本的DOS版本。虽然它没有那么强大,但也能完成任务:

@echo off
set pyUICCommand="pyuic"
set fname=%1
set fname=%fname:.ui=.py%
%pyUICCommand% -o %fname% %1
10

看起来问题主要出在 ${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上有效,如果你用的是其他操作系统,可能需要稍微调整一下,但我希望这能解决你的问题 :)

撰写回答