Get a layout's widgets in PyQT

后端 未结 2 2061
甜味超标
甜味超标 2021-01-11 15:34

I have a QVBoxLayout that I\'ve added a few widgets to, via addWidget(). I need to now delete those widgets, and it seems I need to use remo

2条回答
  •  离开以前
    2021-01-11 16:11

    To get a widget from a QLayout, you have to call its itemAt(index) method. As the name of this method implies, it will return an item instead of a widget. Calling widget() on the result will finally give you the widget:

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

    To remove a widget, set the parent widget to None:

    myWidget.setParent(None)
    

    Also really helpfull is the QLayout count() method. To find and delete all contents of a layout:

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

提交回复
热议问题