9
我想創建一個具有可以動態更改的子小部件的小部件。這是我嘗試過的:如何用Python和Qt動態更改子窗口小部件?
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」標籤。它仍然呈現在「酒吧」之上。 Screenshot of the problem。如何刪除舊窗口小部件,以便僅顯示新窗口小部件?
我知道我可以更改標籤的文本屬性。這不是我想要的應用程序中,我需要更改實際的小部件(到不同的小部件類型)。
非常感謝!這工作:)我是否需要從佈局中刪除小部件?不刪除它似乎工作,但也許這有問題? – Jules
在調試器中徘徊一段時間,看起來垃圾收集足夠智能,可以移除佈局中的引用。所以我不認爲這會造成問題。 –