python - pyqt:如何删除小部件?

标签 python qt widget pyqt

我有一个 QGroupBox 小部件,其中包含要删除的子级。我怎么做?我在 the docs 中找不到任何 removeWidgetremoveChildremoveItem 或任何类似内容.我只能看到如何从布局中删除东西,但显然并没有从实际的小部件中删除它。

最佳答案

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

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

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

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

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

尝试这两种方法,看看哪种方法适合你(重复多次后不要泄漏内存)。

关于python - pyqt:如何删除小部件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5899826/

相关文章:

python - 避免 SQLAlchemy 中的套接字超时

c++ - QRegEx 帮助,一般的 RegEx

android - 如何在我的项目中处理 android widget 中的 AppWidgetProvider?

c++ - 为 qt 安装小部件

python - Python 调试器不会捕获单元测试中的异常

python - Python 中的多级分组 X 轴

python - 我怎样才能使这个循环更有效率?

c++ - QT DEFINES 是否与 C++ 中的#define 做同样的事情?

c++ - Qt中如何获取SD卡的文件系统格式?

python - 如果项目是在 .py 而不是 kv lang 中定义的,我该如何移动 Kivy 小部件的 Canvas 项目?