pyQt删除控件

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

        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()

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

猜你喜欢

转载自blog.csdn.net/fly_view/article/details/130781682