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中类的接口包括属性和方法,属性又分为类属性[静态变量]和类的实例属性[实例变量]。

posted @ 2020-11-28 09:45  GOgo学习  阅读(296)  评论(0)    收藏  举报