Как очистить QBoxLayout
Есть вот такой код в tkinter
lis_del_ff = self.top_ff.pack_slaves()
for l in lis_del_ff:
l.destroy()
Как реализовать подобное на pyqt5? Ясно что отдельный виджет можно удалить
box.removeWidget(widget)
но как автоматизировать задачу подобно tkinter, если в конкретный момент неизвестно, что за виджеты в боксе?
В итоге я получил вот такой работоспособный код аналогичный tkinter-му:
for i in reversed(range(box.count())):
w = box.itemAt(i).widget()
w.setParent(None)
w.deleteLater()
Ответы (2 шт):
Автор решения: Victor VosMottor thanks Monica
→ Ссылка
В QBoxLayout есть метод children, который возвращает список всех виджетов. Остается только пройтись циклом по ним:
for i in box.children():
box.removeWidget(i)
for i in reversed(range(layout.count())):
layout.itemAt(i).widget().setParent(None)
Автор решения: eri
→ Ссылка
Да просто удали сам бокс и создай новый. Детей удалит сборщик мусора, если ничего лишнего там не сделано чтоб это предотвратить.