Python Qt设计器-仅生成一个带有多个小部件的.ui文件

Python Qt设计器-仅生成一个带有多个小部件的.ui文件,python,qt,pyside,qt-designer,Python,Qt,Pyside,Qt Designer,几周前,我开始使用Qt设计器为我的PySide应用程序生成一些自定义小部件。有一件事我希望我能做,但我无法找到方法:我想把我所有的小部件只保存在一个大的.ui,然后将它们编译成一个大的.py文件,这样所有的GUI细节都在同一个文件中,比如GUI.py。这样我就可以写这样的东西: import gui.MainWindow import gui.FluffyRabbitWidget class MainWindow(gui.MainWindow): pass class FluffyRabbit

几周前,我开始使用Qt设计器为我的PySide应用程序生成一些自定义小部件。有一件事我希望我能做,但我无法找到方法:我想把我所有的小部件只保存在一个大的
.ui
,然后将它们编译成一个大的
.py
文件,这样所有的GUI细节都在同一个文件中,比如
GUI.py
。这样我就可以写这样的东西:

import gui.MainWindow
import gui.FluffyRabbitWidget

class MainWindow(gui.MainWindow): pass
class FluffyRabbitWidget(gui.FluffyRabbitWidget): pass

这样,我就不必为拥有一大堆不同的文件和Python代码而烦恼了,因为Python代码是生成的,所以我永远不会阅读这些文件。那么,我怎样才能只拥有一个大的
.ui
文件呢?如果不可行,是否有办法告诉
pyside uic
仅生成一个
.py
文件,并将多个
.ui
文件作为输入?

阅读的源代码,您可以看到它不接受多个
.ui
参数:

opts, args = parser.parse_args()

if len(args) != 1:

    sys.stderr.write("Error: one input ui-file must be specified\n")

    sys.exit(1)

sys.exit(invoke(Driver(opts, args[0])))
所以答案是:不。
pyside uic
不能这样做

肮脏的解决方案可能是将生成的文件一起
cat
,但每次修改小部件时都必须这样做:

$ cat generated_*.py > gui.py

(其中,
generated.*.py
应该是一个正则表达式,它与为小部件生成的文件相匹配。

好的,因此没有来自
pyside uic的帮助。
。我已经想到了其他肮脏的解决方案;这一个看起来并不比其他解决方案更丑陋。你知道Qt Designer是否有可行的东西吗?阅读
.ui
XML,我不知道几个小部件是否只能放在一个
.ui
文件中。不幸的是,我不喜欢XML模式,所以我不知道在一个文件上是否可以有多个定义,但您可能会发现文件格式规范。@rlacko这似乎是一个合理的解决方案,尽管有一些缺点。例如,您有从gui.module\u name导入ClassName而不是从gui import ClassName中导入
,但这可以通过在包
\uuuu init\uuuuuuuuuy.py
中进行导入来解决。由于没有解决方案,我想我只需将所有文件放在一个子包中,然后用
\uuuu all\uuuuuuuuu
稍微弄乱一下。