因此,如果我进入 QtDesigner 并构建一个 UI,它将被保存为一个 .ui 文件。如何将其作为 python 文件或在 python 中使用?
12 回答
在代码中使用 .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',所以你必须将资源编译到这个名称的文件中,或者在生成的代码中重命名。
结合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_())
您需要使用 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
我将简要描述从那篇文章中创建并将 .ui 文件更改为 .py 文件的操作。
- 从开始菜单启动 Qt Designer。
- 从“新建表单”窗口,创建“主窗口”
- 从左侧的“Widget Box Menu”底部的“Display Widgets”
添加一个“Label Widget”。(单击拖放) - 双击新添加的 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 中打开,然后我从那里“运行”文件)
希望这可以帮助某人。
您还可以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_())
我认为更清洁的方法是首先导出到 .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
可能被设计器覆盖的范围之外。如上所示,您只需ui
通过类进行引用。MyWindow
您可以使用以下命令将 .ui 文件转换为可执行的 python 文件。
pyuic4 -x form1.ui > form1.py
现在您可以直接执行 python 文件
python3(whatever version) form1.py
您可以导入此文件并使用它。
你可以像这样编译ui文件
pyuic4 -x helloworld.ui -o helloworld.py
为了将 .ui 文件编译为 .py 文件,我做了:
python pyuic.py form1.ui > form1.py
附件。
在 pyqt5 中从 ui 文件转换为 .py 文件
pyuic5.exe youruifile.ui -o outputpyfile.py -x
(2020 年 11 月)这对我有用(UBUNTU 20.04):
pyuic5 /home/someuser/Documents/untitled.ui > /home/someuser/Documents/untitled.py
使用 Anaconda3(2018 年 9 月)和 QT Designer 5.9.5。在 QT 设计器中,将文件另存为 ui。打开 Anaconda 提示符。搜索您的文件:cd C:....(复制/粘贴文件的访问路径)。然后写: pyuic5 -x helloworld.ui -o helloworld.py(helloworld = 你的文件名)。进入。启动 Spyder。打开你的文件 .py。