将 qtDesigner .ui 文件链接到 python/pyqt?

Posted

技术标签:

【中文标题】将 qtDesigner .ui 文件链接到 python/pyqt?【英文标题】:Linking a qtDesigner .ui file to python/pyqt? 【发布时间】:2011-01-24 19:44:48 【问题描述】:

因此,如果我进入 QtDesigner 并构建 UI,它将被保存为 .ui 文件。如何将其作为 python 文件或在 python 中使用?

【问题讨论】:

我已经使用 PySide QUiLoader 来实现这一点 - 请参阅帖子 [4442286][1] [1]:***.com/questions/4442286 下面的方法更实用:***.com/questions/14892713/… 【参考方案1】:

你需要使用pyuic工具(site-packages\pyqt4\bin)从你的ui文件生成一个python文件

pyuic form1.ui > form1.py

使用 pyqt4

pyuic4.bat form1.ui > form1.py

然后您可以将 form1 导入到您的脚本中。

【讨论】:

【参考方案2】:

您可以使用以下命令将您的 .ui 文件转换为可执行的 python 文件..

pyuic4 -x form1.ui > form1.py

现在你可以直接执行 python 文件了

python3(whatever version) form1.py

你可以导入这个文件,你可以使用它。

【讨论】:

仅供参考 如果您省略 -x 选项,您将无法获得创建和运行应用程序的代码部分。我看过一些省略“-x”的答案。这个答案是最全的。【参考方案3】:

在代码中使用 .ui 的另一种方法是:

from PyQt4 import QtCore, QtGui, uic
class MyWidget(QtGui.QWidget)
    ...
    #somewhere in constructor:
    uic.loadUi('MyWidget.ui', self)

这两种方法都很好。不要忘记,如果你使用 Qt 资源文件(非常有用)来制作图标等,你也必须编译它:

pyrcc4.exe -o ui/images_rc.py ui/images/images.qrc

注意,uic编译接口时,会在.py文件末尾添加'import images_rc',所以必须将资源编译到这个名字的文件中,或者在生成的代码中重命名。

【讨论】:

完成后能否添加如何访问变量?比如pushButton? @JonathanLeaders 如果在 .ui 文件中定义了一个按钮,您只需像这样调用它:self.pushButton。您还可以将 ui 加载到您想要的任何类属性:uic.loadUi('uifile.ui', self.ui) 并调用小部件和 self.ui.pushButton 之类的东西。【参考方案4】:

我发现这篇文章很有帮助。

http://talk.maemo.org/archive/index.php/t-43663.html

我将简要描述创建 .ui 文件并将其更改为 .py 文件的操作,取自那篇文章。

    从开始菜单启动 Qt Designer。 从“新建表单”窗口,创建“主窗口” 从“显示小部件”到左侧“小部件框菜单”的底部 添加一个“标签小部件”。 (点击拖放) 双击新添加的 Label Widget 将其名称更改为“Hello World” 此时您可以使用 Control + R 热键查看它的外观。 如果需要,可以通过拖放添加按钮或文本或其他小部件。 现在保存您的表单。文件->另存为->“Hello World.ui”(Control + S 也会弹出 “另存为”选项)记下您保存“Hello World”的目录。ui 文件。 (为方便起见,我将我的保存在 (C:) 中)

文件已创建并保存,现在我们将使用 pyuic 从中生成 Python 代码!

    从您的开始菜单中打开一个命令窗口。 现在“cd”进入您保存“Hello World.ui”的目录对我来说,我只需要 "cd\" 并在我的 "C:>" 提示符下,我的 "Hello World.ui" 被保存到那里。 当您进入存储文件的目录时,键入以下内容。 pyuic4 -x helloworld.ui -o helloworld.py 恭喜!!你现在有一个 python Qt4 GUI 应用程序!! 双击你的 helloworld.py 文件运行它。 (我使用 pyscripter 并双击 它在 pyscripter 中打开,然后我从那里“运行”文件)

希望这对某人有所帮助。

【讨论】:

我正在使用:pyuic4 helloworld.ui > helloworld.py 进行编译。确实必须将 -x 和 -o 参数传递给 pyuic4。感谢您提供信息!。 很好的解释,尤其是“GUI的生成”-代码实际上是在生成的文件中帮助了我,干杯!【参考方案5】:

结合Max's answer 和Shriramana Sharma's mailing list post,我构建了一个小型工作示例,用于加载包含QMainWindowmywindow.ui 文件(因此只需选择在Qt Designer 的File-New 对话框中创建一个主窗口)。

这是加载它的代码:

import sys
from PyQt4 import QtGui, uic

class MyWindow(QtGui.QMainWindow):
    def __init__(self):
        super(MyWindow, self).__init__()
        uic.loadUi('mywindow.ui', self)
        self.show()

if __name__ == '__main__':
    app = QtGui.QApplication(sys.argv)
    window = MyWindow()
    sys.exit(app.exec_())

【讨论】:

这应该是最好的答案,因为它是一个完整的例子。【参考方案6】:

你可以像这样编译ui文件

pyuic4 -x helloworld.ui -o helloworld.py

【讨论】:

【参考方案7】:

为了将 .ui 文件编译为 .py 文件,我做了:

python pyuic.py form1.ui > form1.py

委托人

【讨论】:

【参考方案8】:

你也可以在 PyQt5 中使用uic 和下面的代码。

from PyQt5 import uic, QtWidgets
import sys

class Ui(QtWidgets.QDialog):
    def __init__(self):
        super(Ui, self).__init__()
        uic.loadUi('SomeUi.ui', self)
        self.show()

if __name__ == '__main__':
    app = QtWidgets.QApplication(sys.argv)
    window = Ui()
    sys.exit(app.exec_())

【讨论】:

【参考方案9】:

在我看来,更简洁的方法是首先导出到 .py,如前所述:

pyuic4 foo.ui > foo.py

然后在你的代码中使用它(例如main.py),比如:

from foo import Ui_MyWindow


class MyWindow(QtGui.QDialog):
    def __init__(self):
        super(MyWindow, self).__init__()

        self.ui = Ui_MyWindow()
        self.ui.setupUi(self)

        # go on setting up your handlers like:
        # self.ui.okButton.clicked.connect(function_name)
        # etc...

def main():
    app = QtGui.QApplication(sys.argv)
    w = MyWindow()
    w.show()
    sys.exit(app.exec_())

if __name__ == "__main__":
    main()

这种方式使不使用 qt-designer 的其他人能够阅读代码,并且还可以将您的功能代码保持在 foo.py 之外,这可能会被设计师覆盖。您只需引用 uiMyWindow 类,如上所示。

【讨论】:

self.ui.okButton.clicked.connect(self.function_name) 给了我TypeError: event() takes 1 positional argument but 2 were given。你是怎么解决的?【参考方案10】:

使用 Anaconda3(2018 年 9 月)和 QT Designer 5.9.5。 在 QT 设计器中,将文件另存为 ui。 打开 Anaconda 提示符。搜索您的文件:cd C:....(复制/粘贴文件的访问路径)。 然后写: pyuic5 -x helloworld.ui -o helloworld.py(helloworld = 你的文件名)。进入。 启动 Spyder。打开你的文件 .py。

【讨论】:

【参考方案11】:

在pyqt5中从ui文件转换为.py文件

pyuic5.exe youruifile.ui -o outputpyfile.py -x

【讨论】:

【参考方案12】:

2020 年 11 月)这对我有用(UBUNTU 20.04):

pyuic5 /home/someuser/Documents/untitled.ui > /home/someuser/Documents/untitled.py

【讨论】:

以上是关于将 qtDesigner .ui 文件链接到 python/pyqt?的主要内容,如果未能解决你的问题,请参考以下文章

将pyqt ui文件转换成py文件

Qt Designer - 只生成一个带有多个小部件的 .ui 文件

使用 pyqt4 在设计的 qtdesigner ui 中添加树视图

Qt Designer的使用

使用pyqt5将QT的ui文件转化为py文件

在pycharm调用QTdesigner生成的图形程序界面