Задать вопрос
@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(), но не помогает.
Подскажите, пожалуйста, в чем может быть проблема?
  • Вопрос задан
  • 141 просмотр
Подписаться 1 Простой Комментировать
Помогут разобраться в теме Все курсы
  • Яндекс Практикум
    Разработчик C++
    9 месяцев
    Далее
  • Нетология
    Разработчик на C++: Профессия + специализация + нейросети
    12 месяцев
    Далее
  • Яндекс Практикум
    Разработчик C++ расширенный
    12 месяцев
    Далее
Пригласить эксперта
Ответы на вопрос 1
Используйте функцию removeWidget у объекта QGridLayout
Если надо удалить виджет из памяти используйте функцию deleteLater у объекта QWidget
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы