天天看点

PyQt5学习笔记04——顶层窗口(也叫父控件/独立控件)的创建及理解【标题】顶层窗口(也叫父控件/独立控件)的创建及理解

文章目录

  • 【标题】顶层窗口(也叫父控件/独立控件)的创建及理解
    • 1、什么是顶层窗口?
    • 2、主窗口与顶层窗口的区别
    • 3、什么是父控件?
    • 4、通过一个简单例子理解顶层窗口和顶层控件
            • 1. 首先,在应用程序中创建一个空白窗口(使用QWidget控件创建);
            • 2. 再创建一个“按钮QPushButton”控件,同样没有父控件,它会以一个独立窗口显示。
            • 3. 再创建一个“标签QLabel”控件,并设置控件属性和显示;
      • 5、创建一个父控件和子控件(子控件显示在父窗口中)

【标题】顶层窗口(也叫父控件/独立控件)的创建及理解

1、什么是顶层窗口?

顶层窗口——就是当前响应的窗口,非顶层窗口就是灰色的,不响应的窗口。

2、主窗口与顶层窗口的区别

主窗口永远只有1个;

非主窗口可有多个;

顶层窗口也只有1个;但他们是不是顶层窗口得看当前执行的窗口是否在最上面(所有窗口的上面)。

就是主窗口的建立代表应用程序的开始;主窗口的关闭代表应用程序的结束。而顶层窗口只是显示在最上面,覆盖其他窗口,但却没有其他窗口能够挡住它!

首先,一个应用程序可以有许多窗口,但主窗口只有一个!而顶层窗口其实也只有一个,但却可以是不同名字的窗口。 举个例子:

我创建了3个窗口:窗口1、2和3。其中,窗口1是主窗口。是这个应用程序的根本。当我运行该程序时,窗口1立即出现,此时,它就是顶层窗口;

在运行程序期间,我利用某些方法(例如点击鼠标或按键盘)可以打开第二个窗口,此时,主窗口仍然是窗口1,而顶层窗口却改为窗口2了。

我又打开了一个窗口,此时,主窗口仍然是窗口1,而顶层窗口又变成窗口3了,窗口2什么也不是。

当我关闭窗口3时,窗口2成为顶层窗口(当然我们可以用一定的方法不这么做),窗口1还是主窗口。

当我关闭窗口2时,窗口1成为顶层窗口,同时也是主窗口。

但是,如果我没有关闭窗口2和3,而是立即关闭窗口1(如果可以的话,但一般我们都阻止用户这么做,必须让他们先关掉其他窗口再关主窗口!),那么程序就会停止。另外两个窗口也会随即关闭。一般应用程序都是这么设计的。

简言之,就是主窗口的建立代表应用程序的开始;主窗口的关闭代表应用程序的结束。而顶层窗口只是显示在最上面,覆盖其他窗口,但却没有其他窗口能够挡住它!

3、什么是父控件?

简单来说,控件停靠的容器称之为父控件,那么所有停靠在父控件内的控件称之为子控件;

4、通过一个简单例子理解顶层窗口和顶层控件

# -*- coding: utf-8 -*-
"""--一个最基本的Python GUI程序框架---"""
# 导入需要的包
from PyQt5.Qt import *
import sys
# 1、创建一个应用程序
app = QApplication(sys.argv)  #创建一个应用程序(比不可少的)
#2、控件操作

#2.1 创建控件

# 2.2 设置控件

# 2.3 展示控件

#3、开始执行应用程序,并进入消息循环
sys.exit(app.exec_())

           

【解释】

  • 控件操作主要包括:创建控件,设置控件(大小、位置、样式…),事件,信号的处理
  • 窗口控件——是一个容器,可以用于承载其他的控件,并且它具有一些特性(设置标题、图标)
  • 若创建的是一个独立的(最纯洁的顶层控件)的控件,则展示的是一个独立的窗口

接下来,我们在应用程序app中进行控件操作。

1. 首先,在应用程序中创建一个空白窗口(使用QWidget控件创建);

window = QWidget()    #Qt::Widget是独立窗口和子窗口两用的,Qt::Window会有标题栏)
           

完整代码如下:

PyQt5学习笔记04——顶层窗口(也叫父控件/独立控件)的创建及理解【标题】顶层窗口(也叫父控件/独立控件)的创建及理解

上面代码执行之后,没有任何窗口显示出来,为什么呢?

因为——刚创建好的一个控制(QWidget)之后,(这个控件没有什么父控件),默认情况下是不会被展示,只有手动的调用show()函数才能显示。即

window.show()   #
           

将此函数加在“2.3 展示控件”区域。执行结果如下图所示

PyQt5学习笔记04——顶层窗口(也叫父控件/独立控件)的创建及理解【标题】顶层窗口(也叫父控件/独立控件)的创建及理解

当我们创建一个控件之后,如果这个控件没有父控件,则把它当做顶层控件(也叫顶层窗口),展示时就是一个独立的窗口,系统会自动给窗口添加一些装饰(标题栏、最小化、最大化、关闭按钮)

(1)修改Widget窗口的标题

PyQt5学习笔记04——顶层窗口(也叫父控件/独立控件)的创建及理解【标题】顶层窗口(也叫父控件/独立控件)的创建及理解

设置窗口的大小:window.resize(width,heigh)

PyQt5学习笔记04——顶层窗口(也叫父控件/独立控件)的创建及理解【标题】顶层窗口(也叫父控件/独立控件)的创建及理解

2. 再创建一个“按钮QPushButton”控件,同样没有父控件,它会以一个独立窗口显示。

PyQt5学习笔记04——顶层窗口(也叫父控件/独立控件)的创建及理解【标题】顶层窗口(也叫父控件/独立控件)的创建及理解

为什么没有显示?

——是因为push = QPushButton()是一个没有父控件的控件,所以显示时会以独立窗口显示。这样的话,需要我们手动添加一个显示函数:show(),才能显示。

PyQt5学习笔记04——顶层窗口(也叫父控件/独立控件)的创建及理解【标题】顶层窗口(也叫父控件/独立控件)的创建及理解

3. 再创建一个“标签QLabel”控件,并设置控件属性和显示;

PyQt5学习笔记04——顶层窗口(也叫父控件/独立控件)的创建及理解【标题】顶层窗口(也叫父控件/独立控件)的创建及理解

5、创建一个父控件和子控件(子控件显示在父窗口中)

PyQt5学习笔记04——顶层窗口(也叫父控件/独立控件)的创建及理解【标题】顶层窗口(也叫父控件/独立控件)的创建及理解

创建一个父控件QWidget,并创建一个子控件(QLabel),而此子控件继承父控件QWidget,则子控件不能独立显示,而是显示在父控件中,且显示函数只需要一个,即对QWidget控件的显示函数。

继续阅读