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_())
- 实现效果


浙公网安备 33010602011771号