python – 删除小部件和布局

python – 删除小部件和布局,第1张

概述我试图找到一些需要qt布局并从中删除所有内容的东西.想象一下窗口是什么样的 – 我有: QVBoxLayout | ------QHboxLayout |---------QWidget | ------QHboxLayout |---------QWidget ......... 所以 我试图找到一些需要qt布局并从中删除所有内容的东西.想象一下窗口是什么样的 – 我有:

QVBoxLayout     | ------QHBoxLayout                 |---------QWidget     | ------QHBoxLayout                 |---------QWidget            .........

所以我需要一些东西,我可以递归地调用CLEAR AND DELETE来自我的父QVBoxLayout的所有东西.我尝试了这里提到的东西(Clear all widgets in a layout in pyqt),但没有一个工作(无论如何都没有标记正确答案).我的代码看起来像这样:

def clearLayout(self,layout):    for i in range(layout.count()):        if (type(layout.itemAt(i)) == QtGui.QHBoxLayout):            print "layout " + str(layout.itemAt(i))            self.clearLayout(layout.itemAt(i))        else:            print "Widget" + str(layout.itemAt(i))            layout.itemAt(i).Widget().close()

但它给出了一个错误:

layout.itemAt(i).Widget().close()            AttributeError: 'nonetype' object has no attribute 'close'

=>编辑
这种方式有效(但如果除了HBoxLayout之外还有其他任何布局:

def clearLayout(self,layout):    layouts = []    for i in range(layout.count()):        if (type(layout.itemAt(i)) == QtGui.QHBoxLayout):            print "layout " + str(layout.itemAt(i))            self.clearLayout(layout.itemAt(i))            layouts.append(layout.itemAt(i))        else:            print "Widget" + str(layout.itemAt(i))            if (type(layout.itemAt(i)) == QtGui.QWidgetItem):                layout.itemAt(i).Widget().close()
解决方法 清除布局最安全的方法是使用 takeAt方法提取项目,然后使用 deleteLater显式删除任何小部件

def clearLayout(self,layout):    if layout is not None:        while layout.count():            item = layout.takeAt(0)            Widget = item.Widget()            if Widget is not None:                Widget.deleteLater()            else:                self.clearLayout(item.layout())
总结

以上是内存溢出为你收集整理的python – 删除小部件和布局全部内容,希望文章能够帮你解决python – 删除小部件和布局所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/langs/1195272.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-03
下一篇 2022-06-03

发表评论

登录后才能评论

评论列表(0条)

保存