任何理论的首要任务都是阐述令人混淆的术语和概念。只有实现了术语和概念的一致性,我们才能够清晰、流畅地思考问题,并且期望与读者分享相同的观点。
——克劳塞维茨,《战争论》作者
同样的道理,在学习PyQt5之前,我们也要对一些令人混淆的基本概念进行详细解释,只有彻底理解基础知识,后面的学习才会更加顺利。这一章我们将关注PyQt5的基本窗口控件,学会如何部署和调整控件。
QMainWindow
QMainWindow主窗口为用户提供一个应用程序框架,它有自己的布局,可以在布局中添加控件。在主窗口中可以添加控件,比如可以把工具栏、菜单栏和状态栏等添加到布局管理器中。
窗口类型介绍
QMainWindow、QWidget 和QDialog三个类都是用来创建窗口的,可以直接使用,也可以继承后再使用。
QMainWindow 窗口可以包含菜单栏、工具栏、状态栏、标题栏等,是最常见的窗口形式,也可以说是GUI程序的主窗口,如图4-1所示。
QDialog 是对话框窗口的基类。对话框主要用来执行短期任务,或者与用户进行互动,它可以是模态的, 也可以是非模态的。QDialog窗口没有菜单栏、工具栏、状态栏等。
如果是主窗口,就使用QMainWindow类;如果是对话框,就使用QDialog类;如果不确定,或者有可能作为顶层窗口,也有嵌入到其他窗口中,那么就使用QWidget类。
基础窗口控件QWidget类是所有用户界面对象的基类,所有的窗口和控件都直接或间接继承自QWidget类。
窗口控件(Widget, 简称“控件”)是在PyQt中建立界面的主要元素。在PyQt中把没有嵌入到其他控件中的控件称为窗口,一般窗口都有边框、标题栏。窗口是指程序的整体界面,可以包含标题栏、菜单栏、工具栏、关闭按钮、 最小化按钮、最大化按钮等; 控件是指按钮、复选框、文本框、表格、进度条等这些组成程序的基本元素。一个程序可以有多个窗口,一个窗口也可以有多个控件。
创建一个主窗口,如下:
运行结果: