在PyQt中,所以class都是从QObject派生而来,QWidget对象就可以有一个parent。这种parent-child关系主要用于两个方面:
没有parent的QWidget类被认为是最上层的窗体(通常是MainWindow),由于MainWindow的一些操作生成的新窗体对象,parent都应该指向MainWindow。
由于parent-child关系的存在,它保证了child窗体在主窗体被回收之时也被回收。
parent作为构造函数的最后一个参数被传入,但通常情况下不必显示去指定parent对象。因为当调用局管理器时,部局管理器会自动处理这种parent-child关系。但是在一些特殊的情况下,我们必须显示的指定parent-child关系。如当生成的子类不是QWidget对象但继承了QObject对象,用作dock widgets的QWidget对象。
我们可以看到,对象之间有了依赖和生命周期,把IOC容器运用到GUI编程中是自然而然的事情了。
# -*- coding: utf-8 -*-
'''
【简介】
PyQT5中主窗口例子
'''
import sys
from PyQt5.QtWidgets import QMainWindow , QApplication
from PyQt5.QtGui import QIcon
class MainWidget(QMainWindow): //子类继承了QMainWindow
def __init__(self,parent=None):
super(MainWidget,self).__init__(parent) //继承初始化:找到MainWidget的父类,执行父类的__init__()
# 设置主窗体标签
self.setWindowTitle("QMainWindow 例子")
self.resize(400, 200)
self.status = self.statusBar() //创建状态栏
self.status.showMessage("这是状态栏提示",5000) //左下角的状态栏(内容,时间(毫秒))
if __name__ == "__main__":
app = QApplication(sys.argv)
app.setWindowIcon(QIcon("./images/cartoon1.ico"))
main = MainWidget()
main.show()
sys.exit(app.exec_())