@wintreist

Почему не очищается QGridLayout?

class GridContainer(QGridLayout):
    ...
    def _updateMe(self):
        while self.count():
            widget = self.takeAt(0).widget()
        QApplication.processEvents()

Код вызывается из основного потока событий.
Пытаюсь очистить layout вызывая takeAt, self.count() - становится нулем, вызываю QApplication.processEvents(), чтобы отрисовалось (важно), что на виджете ничего нет, код продолжается, но в layout'e все ещё присутствуют QWidget'ы.
Вроде же логически должно очистить layout, но нет...
Пробовал вызывать:
widget.update()
self.update()
self.parent().update()
перед QApplication.processEvents(), но не помогает.
Подскажите, пожалуйста, в чем может быть проблема?
  • Вопрос задан
  • 43 просмотра
Пригласить эксперта
Ответы на вопрос 1
Используйте функцию removeWidget у объекта QGridLayout
Если надо удалить виджет из памяти используйте функцию deleteLater у объекта QWidget
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
01 мар. 2024, в 00:53
500 руб./за проект
29 февр. 2024, в 23:10
6000 руб./за проект
29 февр. 2024, в 22:54
3000 руб./за проект