pyqt:如何删除一个小部件?

我有一个QGroupBox小部件,其中包含要删除的子项。 我怎么做? 我无法找到任何removeWidgetremoveChildremoveItem或类似的文档。 我只能看到如何从布局中删除东西,但显然,它并没有从实际的部件中删除它。


如果你的小部件没有依赖它的子部件,我认为你可以使用:

layout.removeWidget(self.widget_name)
self.widget_name.deleteLater()
self.widget_name = None

在我的测试中,当它是一个有孩子的小部件时,你必须:

import sip
layout.removeWidget(self.widget_name)
sip.delete(self.widget_name)
self.widget_name = None

如果您在类或全局级别上没有变量名称,那么您仍然可以使用layout.takeAt(index)从布局中删除该变量,并从QLayoutItem中获取该Widget指针,该函数返回QLayoutItem.widget()方法,这种情况下,您不需要将变量名称分配给None,因为它不在您的函数外引用。

试试两种方法,看看对你有什么作用(重复很多次后不要泄漏记忆)。


那么,这是有效的:在我想要移除的小部件上,调用widget.setParent(None) 。 我喜欢在布局中添加小部件的方式,但从布局中移除不会......有趣的东西。


你确定要真正删除小部件吗? 不会hide吗? 恕我直言,接受的方法是使用show / hide ,使部件出现并从用户的视图中消失。

另一种方法是使用QStackedWidget

链接地址: http://www.djcxy.com/p/77403.html

上一篇: pyqt: how to remove a widget?

下一篇: Positioning and Displaying a Custom Widget