pyqt5将QtDesigner生成的ui文件转换为可执行的Python文件
python和pyqt5的安装
请看我的博客Windows下python+pyqt5安装教程
Qt Designer的安装
找到python的默认安装目录,每台电脑都不一样,如果实在找不到在下图红线圈出的位置输入python进行查找
在python默认安装目录下的Lib文件夹下找到site-packages文件夹并打开,查看有无designer.exe文件,如果有直接打开并跳到将ui文件转换为python文件这一步。如果没有找到,有两种方法解决:
1、打开cmd窗口,输入pip3 install pyqt5-tools安装designer.exe。
等待一会,就可安装完成,然后在Python/Lib/site-packages/pyqt5-tools目录下可找到designer.exe文件,右键发送到桌面快捷方式,以后就可以直接点击桌面上的快捷方式打开designer.exe文件。
2、如果安装过qt creator的话,在C:\Qt\Qt5.8.0\5.8\mingw53_32\bin目录下即可找到designer.exe文件,右键发送到桌面快捷方式,以后就可以直接点击桌面上的快捷方式打开designer.exe文件。
将ui文件转换成python文件
打开designer.exe,写一个简单的Hello pyqt5窗口程序
点击Widget,并点击创建按钮
拖入一个label控件,并修改文本为“Hello pyqt5”
然后按下Ctrl+S,修改ui文件名并保存。我是修改成了test名字并保存到了F盘。
可以关闭designer.exe文件了。然后打开cmd窗口,输入pyuic5并回车,如果安装前面叙述的安装方法,应该会出现下图这种情况,表示pyuic5是一个可以识别的命令。
然后输入pyuic5 -o 目标python文件的绝对路径 源ui文件的绝对路径 ,注意空格,我把目标python文件也保存在了F盘,并命名为test.py文件。
我们就能看到F盘下生成了一个test.py文件,打开该文件,我们可以看到以下内容
直接运行该文件,你会发现什么都没有发生,这是因为我们只是建立了一个窗口类,还没有实例化。在导入包的部分添加代码
import sys
在文件末尾添加代码
if __name__ == "__main__": app = QtWidgets.QApplication(sys.argv) MainWindow = QtWidgets.QMainWindow() ui = Ui_Form() ui.setupUi(MainWindow) MainWindow.show() sys.exit(app.exec_())
添加完成后你会看到全部代码是这样的:
# -*- coding: utf-8 -*- # Form implementation generated from reading ui file 'F:\test.ui' # # Created by: PyQt5 UI code generator 5.10.1 # # WARNING! All changes made in this file will be lost! import sys from PyQt5 import QtCore, QtGui, QtWidgets class Ui_Form(object): def setupUi(self, Form): Form.setObjectName("Form") Form.resize(400, 300) self.label = QtWidgets.QLabel(Form) self.label.setGeometry(QtCore.QRect(140, 90, 171, 61)) self.label.setObjectName("label") self.retranslateUi(Form) QtCore.QMetaObject.connectSlotsByName(Form) def retranslateUi(self, Form): _translate = QtCore.QCoreApplication.translate Form.setWindowTitle(_translate("Form", "Form")) self.label.setText(_translate("Form", "Hello pyqt5")) if __name__ == "__main__": app = QtWidgets.QApplication(sys.argv) MainWindow = QtWidgets.QMainWindow() ui = Ui_Form() ui.setupUi(MainWindow) MainWindow.show() sys.exit(app.exec_())
编译运行之后:
哇,窗口出现了哦~(*^▽^*)
简化转换步骤
由于每次转换都要写一次命令行,十分麻烦,我们可以这样操作来简化步骤。建立一个txt文件,向txt文件中写入pyuic5 -o test.py test.ui 文本(python文件和ui文件名用什么都可以)
然后在任意一个盘新建一个文件夹并命名,不妨在F盘下建立文件夹并命名为test,然后把该txt文件保存至该文件夹下并命名为test.txt,将test.txt文件扩展名改为bat。将ui文件也移动到该文件夹下,并命名为test文件中的ui文件名。
点击是。然后双击test.bat文件,我们会看到dos黑窗口一闪而过,然后test文件夹下就自动生成了与test.ui文件对应的test.py文件
保存好这个test.bat文件,每次需要将ui文件转换成python文件时,都可以把ui文件命名为test.bat中的ui文件名然后移动至test文件夹下,双击直接运行test.bat文件就可以直接生成python文件了,是不是简便很多了呢?(*^▽^*)