Quantcast
Channel: Linux.org.ru: Форум (тех. форум)
Viewing all articles
Browse latest Browse all 73859

Удаление виджета в PyQt5

$
0
0

Допустим, есть QVBoxLayout, в который динамически добавляются кнопки:

labels = ['Button 1', 'Button 2', 'Button 3']
for label in labels:
    button = QPushButton(label)
    self.vbox.addWidget(button)

Это происходит внутри метода класса и по идее все переменные локальные, так что должны уничтожиться после выхода из него (если сделать button = None в конце, то ничего не меняется).

А затем в какой-то момент времени мы хотим удалить эти кнопки:

while self.target_buttonbox.takeAt(0):
    pass

В результате данного цикла кнопки удаляются лишь из layout'а, но не сами объекты. Это выглядит как видимые кнопки, которые больше не подчиняются layout. Если же делать не просто takeAt, а вызывать deleteLater к полученному takeAt виджету, то приложение крашится.

Как правильно удалить все виджеты окончательно?

 , , ,


Viewing all articles
Browse latest Browse all 73859

Trending Articles