Я хотел бы создать виджет, у которого есть дочерний виджет, который я могу динамически изменять. Вот что я пробовал:
import sys
from PySide.QtCore import *
from PySide.QtGui import *
class Widget(QWidget):
def __init__(self, parent=None):
QWidget.__init__(self, parent)
self.setLayout(QVBoxLayout())
self.child = QLabel("foo", self)
self.layout().addWidget(self.child)
def update(self):
self.layout().removeWidget(self.child)
self.child = QLabel("bar", self)
self.layout().addWidget(self.child)
app = QApplication(sys.argv)
widget = Widget()
widget.show()
widget.update()
app.exec_()
Проблема в том, что при этом визуально не удаляется метка «foo». Он по-прежнему отображается поверх «бара». Скриншот проблемы . Как удалить старый виджет, чтобы отображался только новый виджет?
Я знаю, что могу изменить текстовое свойство метки. Это не то, что я хочу в своем приложении, мне нужно изменить фактический виджет (на другой тип виджета).