012PyQt5程序基本结构-面向对象版本 - 图1

012PyQt5程序基本结构-面向对象版本 - 图2

将几个小的控件,封装到大的控件内部去。

怎样将一大堆的控件放到一个类里面去?

怎样放到里面的init里面去?

通过继承。

继承时候发生的错误

012PyQt5程序基本结构-面向对象版本 - 图3

报错类型:父类的init的方法应该被调用。

012PyQt5程序基本结构-面向对象版本 - 图4当创建这样一个控件的时候,会自动地去调用系统给我们的Qwidget这个类内部的init方法,那这个方法肯定会做一些事情在里面的吧。

那现在你写了一个类去继承这个Qwidget,继承后,你又自己重写了一遍init方法,就会导致它到时候在创建对象的时候,会自动先调用子类的一个方法。而子类的方法里面并没有调用父类的方法,这样就导致一开始父类里面的方法都没有被实现。

如何解决?

那我们就在子类的方法里面调用父类的方法。

012PyQt5程序基本结构-面向对象版本 - 图5

super的是父类的方法。

问题二

012PyQt5程序基本结构-面向对象版本 - 图6

这个window在外界是属于012PyQt5程序基本结构-面向对象版本 - 图7这个对象,而这个对象在Window(大写)的内部可以使用东西来代替呢?

这个self不就是通过Window类创建出来的一个实例对象

解决

012PyQt5程序基本结构-面向对象版本 - 图8

问题三 再次将子控件的添加单独地抽到一个方法里面去

为了代码结构好看。

将所有添加子控件的操作、以及子控件的配置操作,全部都放到里面去:

012PyQt5程序基本结构-面向对象版本 - 图9

这样可以保证init里面代码逻辑的清晰。功能与之前没区别。