我有一个 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/