4.4 控件之间的父子层级关系

一、控件之间的父子层级关系

1.基本知识

  • 层级关系
将控件放在最底层:lower()
将控件放到最上层:raise_()
将a放到b的下面:a.stackUnder(b)
  • 父子关系
获取指定坐标内的子控件:childAt(x,y) 
获取指定控件的父控件:parentWidget() 
获取控件边界:childrenRect()   

2.代码

  • 层级关系
from PyQt5.Qt import *
import sys


class Window(QWidget) :
    def __init__(self) :
        super().__init__()
        self.setWindowTitle("控件层级关系 - PyQt5中文网")
        self.resize(600, 500)
        self.func_list()

    def func_list(self) :
        self.func()

    def func(self) :
        pass


if __name__ == '__main__' :
    app = QApplication(sys.argv)
    window = Window()

    label1 = QLabel(window)
    label1.setText('标签1')
    label1.resize(100, 100)
    label1.move(50, 50)
    label1.setStyleSheet('background-color:green')

    label2 = QLabel(window)
    label2.setText('标签2')
    label2.resize(100, 100)
    label2.move(80, 80)
    label2.setStyleSheet('background-color:red')

    # label2.lower()  #将label2放在底层
    # label1.raise_() #将label1放在上层
    label2.stackUnder(label1)#2放在1的下面

    window.show()
    sys.exit(app.exec_())
  • 实现效果

  • 父子关系

from PyQt5.Qt import *
import sys
from PyQt5.Qt import *
import sys

'''
childAt(x,y) 获取指定坐标内的子控件
parentWidget() 获取指定控件的父控件
childrenRect()   获取控件边界
'''

class Window(QWidget) :
    def __init__(self) :
        super().__init__()
        self.setWindowTitle("控件父子关系 - PyQt5中文网")
        self.resize(600, 500)
        self.func_list()

    def func_list(self) :
        self.func()

    def func(self) :
        pass


if __name__ == '__main__' :
    app = QApplication(sys.argv)
    window = Window()

    label1 = QLabel(window)
    label1.setText('标签1')

    label2 = QLabel(window)
    label2.setText('标签2')
    label2.move(50, 50)

    label3 = QLabel(window)
    label3.setText('标签3')
    label3.setStyleSheet('background-color:green')
    label3.move(100, 100)

    print(label1)
    print(label2)
    print(label3)

    print('========')
    print(window.childAt(110, 110))#判断存在哪个子控件

    print('========')
    print(window)
    print(label3.parentWidget())#寻找标签3的父控件

    print(window.childrenRect())#获取子控件边界

    window.show()
    sys.exit(app.exec_())

  • 实现效果
posted @ 2022-03-23 22:14  Trouvaille_fighting  阅读(385)  评论(0)    收藏  举报