pyQt删除控件

2023-11-20

一,删除没有子布局的布局里面的控件:

        for i in reversed(range(self.layout1.count())):#倒序删除
            item = self.layout1.itemAt(i)
            # print(type(item), type(item.widget()))
            if item.widget():
                self.layout1.itemAt(i).widget().deleteLater()
            else:#当item.widget()的返回值是None时
                self.layout1.removeItem(item);

注意,item.widget()的返回值有可能为None,这样的话调用deleteLater()就会出问题,所以就不要在语句 if item.widget() == False: 里面调用它。

二,删除有子布局里面的控件

这里只展示只有一层子布局的例子:

        for i in reversed(range(self.layout1.count())):#倒序删除
            item = self.layout1.itemAt(i)
            # print(type(item), type(item.widget()))
            if item.widget():
                self.layout1.itemAt(i).widget().deleteLater()
            else:
                if type(item) == type(QHBoxLayout()):
                    # print(item.count())
                    for j in reversed(range(item.count())):
                        if item.itemAt(j).widget():
                            # print('到达')
                            item.itemAt(j).widget().deleteLater()

注意,当子布局或者布局里面的控件不是全局变量时,删除有可能失败。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

pyQt删除控件 的相关文章

随机推荐