mirror of
https://github.com/muziing/PySide6-Code-Tutorial.git
synced 2025-02-07 00:28:22 +08:00
Add 03-01-05
This commit is contained in:
parent
509b850b1e
commit
daa44341d7
61
03-QtWidgets-常用控件/01-QWidget-控件的基类/05-QWidget-父子关系.py
Normal file
61
03-QtWidgets-常用控件/01-QWidget-控件的基类/05-QWidget-父子关系.py
Normal file
@ -0,0 +1,61 @@
|
||||
import sys
|
||||
from pprint import pprint
|
||||
|
||||
from PySide6 import QtWidgets, QtGui
|
||||
|
||||
"""
|
||||
QWidget 提供了多种API来获取(访问)其父子控件
|
||||
|
||||
.setParent() 指定本控件的父控件
|
||||
.parentWidget() 获取父控件
|
||||
.children() 获取所有子控件,返回一个列表
|
||||
.childAt() 获取在指定坐标的子控件
|
||||
.childrenRect() 所有子控件(被隐藏的除外)构成的矩形
|
||||
.childrenRegion() 所有子控件(被隐藏的除外)构成的范围
|
||||
"""
|
||||
|
||||
|
||||
class MyWidget(QtWidgets.QWidget):
|
||||
def __init__(self):
|
||||
super().__init__()
|
||||
self.setWindowTitle("QWidget-父子关系")
|
||||
self.resize(400, 300)
|
||||
self.setup_ui()
|
||||
self.test_01()
|
||||
self.test_02()
|
||||
|
||||
def setup_ui(self) -> None:
|
||||
"""设置界面"""
|
||||
self.button = QtWidgets.QPushButton("点击我!", self)
|
||||
self.button.clicked.connect(lambda: print("按钮被点击了"))
|
||||
self.button.move(50, 200)
|
||||
self.label_1 = QtWidgets.QLabel("PySide", self)
|
||||
self.label_1.move(150, 50)
|
||||
self.label_2 = QtWidgets.QLabel() # 创建时未指定父控件
|
||||
self.label_2.setPixmap(QtGui.QPixmap("../../Resources/Icons/python_96px.ico"))
|
||||
self.label_2.setParent(self) # 指定父控件
|
||||
|
||||
def test_01(self) -> None:
|
||||
"""测试访问子控件功能"""
|
||||
pprint(self.children()) # 打印所有子控件,以列表返回,顺序同添加顺序
|
||||
|
||||
# 获取处于制定坐标的子控件
|
||||
# 注意:若该坐标无子控件则返回None、似乎对布局管理器无效
|
||||
print(self.childAt(150, 55))
|
||||
|
||||
# 以上方法返回的子控件都可以被操作
|
||||
self.childAt(150, 55).setStyleSheet("background-color: cyan;")
|
||||
|
||||
print(self.childrenRect()) # 打印所有子控件(被隐藏的除外)构成的矩形
|
||||
print(self.childrenRegion())
|
||||
|
||||
def test_02(self) -> None:
|
||||
"""测试访问父控件功能"""
|
||||
print(self.label_2.parentWidget())
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
app = QtWidgets.QApplication([])
|
||||
window = MyWidget()
|
||||
window.show()
|
||||
sys.exit(app.exec())
|
Loading…
x
Reference in New Issue
Block a user