gpt4 book ai didi

python - 如何使用 Python 和 Qt 动态更改子部件?

转载 作者:太空狗 更新时间:2023-10-29 18:20:44 25 4
gpt4 key购买 nike

我想创建一个小部件,它有一个我可以动态更改的子小部件。这是我尝试过的:

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 .如何删除旧的小部件以便仅显示新的小部件?

我知道我可以更改标签的文本属性。这不是我在我的应用程序中想要的,我需要更改实际的小部件(更改为不同的小部件类型)。

最佳答案

removeWidget() 只会从布局中移除项目,而不会删除它。您可以通过调用 setParent(None) 来删除子部件。

def update(self):
self.layout().removeWidget(self.child)
self.child.setParent(None)
self.child = QLabel("bar", self)
self.layout().addWidget(self.child)

关于python - 如何使用 Python 和 Qt 动态更改子部件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6410593/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com