Python:如何在PyQ中取消对GroupBox的布局分配

2024-10-01 17:38:46 发布

您现在位置:Python中文网/ 问答频道 /正文

分组框:

myGroupBox = QtGui.QGroupBox()

两种布局:

^{pr2}$

我将layoutA分配给myGroupBox:

myGroupBox.setLayout(layoutA)

稍后需要将layoutB重新分配给myGroupBox:

myGroupBox.setLayout(layoutB)

但是得到警告。。。在

QWidget::setLayout: Attempting to set QLayout "" on QWidget "", which already has a layout

有可能避免这个警告吗?在尝试分配另一个布局之前,如何从myGroupBox中删除布局?在


Tags: to警告on布局setqtguiqwidgetpr2
1条回答
网友
1楼 · 发布于 2024-10-01 17:38:46

为了为小部件设置新的顶层布局,必须删除现有布局及其所有子项。删除子项相当简单,但是删除布局本身必须使用sip模块强制完成。在

下面是一个实现:

import sip

def deleteLayout(layout):
    if layout is not None:
        while layout.count():
            item = layout.takeAt(0)
            widget = item.widget()
            if widget is not None:
                widget.deleteLater()
            else:
                deleteLayout(item.layout())
        sip.delete(layout)

如果要保留现有布局及其所有子项,请为小部件提供一个永久的顶层布局,然后只需切换子布局,如下所示:

^{pr2}$

相关问题 更多 >

    热门问题