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

所以如果我进入QtDesigner并build立一个UI,它将被保存为一个.ui文件。 我怎样才能使这个python文件或在Python中使用它?

在你的代码中使用.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 uihttp://img.dovov.comimages.qrc 

请注意,当uic编译接口时,会在.py文件末尾添加“import images_rc”,因此您必须将资源编译到具有该名称的文件中,或者将其重命名为生成的代码。

结合Max的答案和Shriramana Sharma的邮件列表文章 ,我构build了一个小工作示例,用于加载包含QMainWindowmywindow.ui文件(只需在Qt Designer的File-New对话框中创build主窗口)。

这是加载它的代码:

 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_()) 

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

 pyuic form1.ui > form1.py 

与pyqt4

 pyuic4.bat form1.ui > form1.py 

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

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

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

我将简要介绍一下创build和更改.ui文件到.py文件的操作,这些文件取自该文章。

  1. 从开始菜单启动Qt Designer。
  2. 从“新build窗体”窗口中,创build“主窗口”
  3. 从“显示小工具”向左侧的“小工具框菜单”底部
    添加一个“标签小部件”。 (点击拖放)
  4. 双击新添加的Label Widget将其名称更改为“Hello World”
  5. 在这一点上,你可以使用Control + R热键看看它将如何看起来。
  6. 如果需要,通过拖放添加button或文本或其他小部件。
  7. 现在保存你的表单..文件 – >另存为 – >“Hello World.ui”(Control + S也会popup
    “另存为”选项)记下您保存“Hello World”.ui的目录
    文件。 (为了方便,我把它保存在(C :)中)

该文件被创build并保存,现在我们将使用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中打开,然后我从那里“运行”该文件)

希望这有助于某人。

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

 pyuic4 -x form1.ui > form1.py 

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

 python3(whatever version) form1.py 

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

你也可以在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_()) 

在我看来,更清洁的方式是首先输出到.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来读取代码的其他人也可以将您的function代码保存在foo.py之外,并且可以被devise人员覆盖。 如上所示,您只需通过MyWindow类引用ui

你可以像这样编译ui文件

 pyuic4 -x helloworld.ui -o helloworld.py 

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

 python pyuic.py form1.ui > form1.py 

ATT。