Pyside2,layout,removeWidget后仍存在

在ui中存在scrollArea_3,想删除其中的QCheckBox

1. 找到所有 QCheckBox

qc= self.ui.scrollArea_3.findChildren(QCheckBox)

2. 删除组件前,解除父组件绑定关系

for i in qc:#循环删除全部部件
    i.setParent(None)#解除和父组件的绑定关系
    self.ui.scrollArea_3.layout().removeWidget(qc)

PySide6是一个Qt应用程序框架的Python绑定,它允许开发者使用Qt库构建跨平台的应用程序。其中,动态布局是通过QLayout和其子类如QVBoxLayout、QHBoxLayout等实现的。动态布局在PySide6中非常重要,因为它允许你在运行时改变控件的位置和大小,无需硬编码布局规则。 例如,你可以创建一个QVBoxLayout,并在运行时添加或删除QWidgets到这个布局中。当你调整窗口大小时,由于是动态布局,控件会自动重新排列以适应新的空间。这对于需要响应用户交互或内容变化的应用场景非常有用。 以下是一个简单的例子: ```python from PySide6.QtCore import Qt from PySide6.QtWidgets import QApplication, QWidget, QVBoxLayout class DynamicLayoutExample(QWidget): def __init__(self): super().__init__() self.layout = QVBoxLayout() self.setLayout(self.layout) button1 = QPushButton("Button 1") button2 = QPushButton("Button 2") button3 = QPushButton("Button 3") # 在初始阶段添加按钮 self.layout.addWidget(button1) self.layout.addWidget(button2) self.layout.addWidget(button3) # 运行时可以动态操作 def add_remove_buttons(): if len(self.layout.children()) < 5: new_button = QPushButton(f"Button {len(self.layout.children()) + 1}") self.layout.addWidget(new_button) else: self.layout.removeWidget(button1) # 如果满了,就移除第一个 app = QApplication([]) example = DynamicLayoutExample() example.show() # 添加事件监听,比如每秒增加一个按钮 timer = QTimer(example) timer.timeout.connect(add_remove_buttons) timer.start(1000) # 每1秒触发一次add_remove_buttons函数 app.exec_() ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

k54kdk

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值