pyqt:如何删除一个小部件?
我有一个QGroupBox
小部件,其中包含要删除的子项。 我怎么做? 我无法找到任何removeWidget
, removeChild
, removeItem
或类似的文档。 我只能看到如何从布局中删除东西,但显然,它并没有从实际的部件中删除它。
如果你的小部件没有依赖它的子部件,我认为你可以使用:
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