python - 在 PyQT 中获取布局的小部件

标签 python qt pyqt pyqt4

我有一个 QVBoxLayout,我通过 addWidget() 添加了一些小部件。我现在需要删除那些小部件,看来我需要使用 removeWidget()(它接收要删除的小部件)来执行此操作。

我认为在我的布局上调用 children()findChildren(QWidget) 会返回我添加到其中的小部件列表;不过,我在调试器中,只是收到空列表。

我是不是误会了什么?我上周才开始使用 PyQT,主要是通过 API 文档的反复试验来学习。

最佳答案

要从 QLayout 获取小部件,您必须调用其 itemAt(index) 方法。 正如此方法的名称所暗示的那样,它将返回一个项目而不是一个小部件。在结果上调用 widget() 最终会给你这个小部件:

myWidget = self.myLayout.itemAt(index).widget()

要删除小部件,请将父小部件设置为None:

myWidget.setParent(None)

QLayout count() 方法也很有帮助。查找和删除布局的所有内容:

index = myLayout.count()
while(index >= 0):
    myWidget = myLayout.itemAt(index).widget()
    myWidget.setParent(None)
    index -=1

关于python - 在 PyQT 中获取布局的小部件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3077192/

相关文章:

python - sys.stdout 未重新分配给 sys.__stdout__

python - 如何在Python中使用多标签分类器对文本进行分类?

Python 多处理 pylab 傅里叶

c++ - 将 Qt 属性与命名空间中定义的自定义类型一起使用

c++ - 在这种情况下如何解耦

python - matplotlib (python) - 在没有 pyplot 的情况下为多个图创建单个自定义图例

python - 删除小于前一个值的数值

python - PyQt5:使用事件进行绘画

python - pyqt打印预览QTableView

python - 你如何在 python 中执行 pyqt .ui 代码?