Найти - Пользователи
Полная версия: PyQt4: Как заменить layout на другой?
Начало » GUI » PyQt4: Как заменить layout на другой?
1
Митрич
В C проблема решается вызовом деструктора того, что выдает widget.layout() и дальше widget.setLayout(newlayout), а в Python как уничтожить старый layout?
poltergeist
import sip
sip.delete(widget.layout())
Митрич
спасибо, про сип я и не подумал…
Митрич
только с этим надо быть внимательнее, так как sip.delete не производит вызова деструктора и соответственно все детишки остаются как живые…
Mixolap
А чтобы прибить все дочернии такой код пользовать?
        layout = self.graphWidget.layout()
while layout.count():
sip.delete(layout.takeAt(0))
sip.delete(layout)
это с учетом что у этих дочерних нет своих дочерних… а если есть?
poltergeist
Mixolap
...
temp = QWidget()
temp.setLayout(widget.layout())
temp.deleteLater()
widget.setLayout(new_layout)
...
Так лучше? Надеюсь увидеть что-то изящнее:)
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB