06. pyuic5.exe编译后的py文件分析
from PyQt5 import QtCore, QtGui, QtWidgets class Ui_Form(object): def setupUi(self, Form): Form.setObjectName("Form") Form.resize(400, 300) self.pushButton = QtWidgets.QPushButton(Form) self.pushButton.setGeometry(QtCore.QRect(120, 190, 75, 23)) self.pushButton.setObjectName("pushButton") self.label = QtWidgets.QLabel(Form) self.label.setGeometry(QtCore.QRect(100, 90, 121, 31)) 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.pushButton.setText(_translate("Form", "PushButton")) self.label.setText(_translate("Form", "hello Python Qt"))
1. Ui_Form类的父类是object,不是QtWidget
2. Ui_Form类定义了函数setupUi(),其接口为 def setupUi(self, Form);传入的参数self为函数自身,Form为一个参数而不是函数的变量
setupUi(self, Form)函数的前两行语句是:
- Form.setObjectName("Form") 和 Form.resize(400, 300) ,所以FormHello是窗体,是一个QWidget对象
- 这个Form是UI Designer里设计窗体的objectName。但Form不是Ui_Form类中创建的,而是作为一个参数传入的
3. 创建了一个QPushButton类型的对象pushButton,语句是:self.pushButton = QtWidgets.QPushButton(Form)
- QPushButton也是Ui_From的一个公共属性,父容器是Form,所以在窗体上显示
4. 创建了一个QLabel类型的对象label,语句是:self.label = QtWidgets.QLabel(Form)
- label 定义为Ui_Form类的一个公共属性,父容器是Form,所以label在窗体Form上显示
- 后面语句设置了label显示位置,大小,字体属性
5. setupUi()函数倒数第二行调用了Ui_Form里的另一个函数retranslateUi(self, Form)
- retranslateUi函数设置了窗体的标题,标签文字按钮标题,设置了窗体上所有的字符串
6. setupUi()函数最后一句用于窗体上各组件的信号与槽函数的自动连接
#######################################################################
1. Ui-Form类函数setupUi()用于窗体初始化,它创建了窗体上所有的组件并设置其属性
2. Ui_Form类并不创建窗体Form,窗体Form是外部传入的,作为所有界面组件的父容器
#######################################################################
python中类的接口包括属性和方法,属性又分为类属性[静态变量]和类的实例属性[实例变量]。