Python GUI教程(七):转换qt设计师的ui代码为Python代码(转载)
本篇我们将会介绍到:
- 查看qt设计师生成的UI代码;
- 通过pyuic5工具转换qt设计师UI为Python代码;
查看qt设计师生成的UI文件
我们在qt设计师中设计好的GUI窗口都会被保存为.ui格式的文件。
![](http://upload-images.jianshu.io/upload_images/38544-3bdca8401cdc4b77.gif?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
实质上,.ui文件依然是文本格式文件,我们使用notepad++打开刚刚保存的.ui文件:
![](http://upload-images.jianshu.io/upload_images/38544-aec4627b7ae4eb76.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/840)
可以发现,.ui文件其实是一个xml文件,其通过不同的标签来表示不同的窗口部件或是行为和信号槽的声明和描述。
通过pyuic5转换UI文件为Python文件
设计好的UI文件如何需要转换为Python文件,该怎么办?毕竟我们需要使用Python来扩展GUI的功能。
我们可以使用PyQt自带的pyuic5工具,对Qt设计师保存的.ui文件进行转换。
pyuic5是一个命令行工具,直接在cmd命令行界面运行即可。下面我们使用pyuic5将刚刚保存的UI文件转换问Python代码:
![](http://upload-images.jianshu.io/upload_images/38544-01778d3227a1f501.gif?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
运行之后,便会自动生成一个ui2py.py的python文件,我们打开看看:
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.resize(585, 477)
self.centralwidget = QtWidgets.QWidget(MainWindow)
self.centralwidget.setObjectName("centralwidget")
self.pushButton = QtWidgets.QPushButton(self.centralwidget)
self.pushButton.setGeometry(QtCore.QRect(170, 140, 75, 23))
self.pushButton.setObjectName("pushButton")
MainWindow.setCentralWidget(self.centralwidget)
self.menubar = QtWidgets.QMenuBar(MainWindow)
self.menubar.setGeometry(QtCore.QRect(0, 0, 585, 23))
self.menubar.setObjectName("menubar")
self.menu = QtWidgets.QMenu(self.menubar)
self.menu.setObjectName("menu")
MainWindow.setMenuBar(self.menubar)
self.statusbar = QtWidgets.QStatusBar(MainWindow)
self.statusbar.setObjectName("statusbar")
MainWindow.setStatusBar(self.statusbar)
self.actionMen1 = QtWidgets.QAction(MainWindow)
self.actionMen1.setObjectName("actionMen1")
self.actionMen2 = QtWidgets.QAction(MainWindow)
self.actionMen2.setObjectName("actionMen2")
self.menu.addAction(self.actionMen1)
self.menu.addSeparator()
self.menu.addAction(self.actionMen2)
self.menubar.addAction(self.menu.menuAction())
self.retranslateUi(MainWindow)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
def retranslateUi(self, MainWindow):
_translate = QtCore.QCoreApplication.translate
MainWindow.setWindowTitle(_translate("MainWindow", "州的先生zmister.com PythonGUI教程"))
self.pushButton.setText(_translate("MainWindow", "PushButton"))
self.menu.setTitle(_translate("MainWindow", "文件"))
self.actionMen1.setText(_translate("MainWindow", "men1"))
self.actionMen2.setText(_translate("MainWindow", "men2"))
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
MainWindow = QtWidgets.QMainWindow()
ui = Ui_MainWindow()
ui.setupUi(MainWindow)
MainWindow.show()
sys.exit