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

Chr*_*ris 75 python user-interface qt pyqt qt-designer

因此,如果我进入QtDesigner并构建一个UI,它将被保存为.ui文件.我怎么能把它作为python文件或在python中使用它?

Max*_*vko 58

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

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

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

pyrcc4.exe -o ui/images_rc.py ui/images/images.qrc
Run Code Online (Sandbox Code Playgroud)

注意,在uic编译接口时,它会在.py文件的末尾添加"import images_rc",因此您必须使用此名称将资源编译到文件中,或者在生成的代码中重命名它.

  • 你可以在完成后添加如何访问变量吗?比如pushButton? (2认同)
  • @JonathanLeaders如果在.ui文件中定义了一个按钮,你可以这样调用它:self.pushButton.您还可以将ui加载到您想要的任何类属性:uic.loadUi('uifile.ui',self.ui)并调用小部件和self.ui.pushButton之类的东西. (2认同)

met*_*mit 45

结合Max的答案Shriramana Sharma的邮件列表帖子,我构建了一个小的工作示例来加载mywindow.ui包含a 的文件QMainWindow(所以只需选择在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_())
Run Code Online (Sandbox Code Playgroud)

  • 这应该是最好的答案,因为它是一个完整的例子. (3认同)

luc*_*luc 28

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

pyuic form1.ui > form1.py
Run Code Online (Sandbox Code Playgroud)

用pyqt4

pyuic4.bat form1.ui > form1.py
Run Code Online (Sandbox Code Playgroud)

然后,您可以将form1导入到脚本中.


小智 24

我发现这篇文章非常有帮助.

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

我将简要描述创建和更改.ui文件到.py文件的操作,取自该文章.

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

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

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

希望这有助于某人.


Aks*_*hay 15

您还可以uic在PyQt5中使用以下代码.

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_())
Run Code Online (Sandbox Code Playgroud)


Jeb*_*eba 9

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

pyuic4 -x form1.ui > form1.py
Run Code Online (Sandbox Code Playgroud)

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

python3(whatever version) form1.py
Run Code Online (Sandbox Code Playgroud)

您可以导入此文件,然后就可以使用它.


ste*_*ios 9

在我看来,更清洁的方式是首先导出到.py如上所述:

pyuic4 foo.ui > foo.py
Run Code Online (Sandbox Code Playgroud)

然后在代码中使用它(例如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()
Run Code Online (Sandbox Code Playgroud)

这种方式使得其他不使用qt-designer的人能够阅读代码,并将您的功能代码保留在foo.py设计者可能覆盖的范围之外.您只需ui通过MyWindow上面的课程参考.


小智 5

你可以像这样编译ui文件

pyuic4 -x helloworld.ui -o helloworld.py
Run Code Online (Sandbox Code Playgroud)