gpt4 book ai didi

python - 我的小部件不想消失

转载 作者:太空宇宙 更新时间:2023-11-04 01:33:38 24 4
gpt4 key购买 nike

我是新来的,我是法国人,所以请原谅我的英语。

当我从 QTableView 中选择一个单元格时,我的一个函数从标签列表中创建了一些带有给定标签的按钮。但是当我选择另一个单元格时,有时标签列表是空的(而且必须是空的)。所以我想清除旧按钮的布局,如果列表中没有标签则不显示任何内容。但是这里的代码:

def clearLayout(self, layout):
if layout is not None:
while layout.count():
item = layout.takeAt(0)
widget = item.widget()
if widget is not None:
widget.deleteLater()
else:
self.clearLayout(item.layout())



def getInfos(self, element):

"""Slot qui récupère les infos d'une vidéo quand la cell
correspondante est sélectionnée"""

self.tags = liste.displayTag(self.modele.record(element.row()).value('id'))

self.vbox_tags = QtGui.QVBoxLayout()

if self.tags != None:
self.liste_boutons = list()
for indice, tag in enumerate(self.tags):
self.liste_boutons.append(QtGui.QPushButton(tag))

#Utilisation de la fonction partial trouvée ici:
#http://stackoverflow.com/questions/4578861/connecting-slots-and-signals-in-pyqt4-in-a-loop
self.liste_boutons[indice].clicked.connect(partial(self.displayVidsWithTag, tag))
self.vbox_tags.addWidget(self.liste_boutons[indice])

#On aligne les boutons des tags en haut
self.vbox_tags.setAlignment(QtCore.Qt.AlignTop)
self.onglet_tags.setLayout(self.vbox_tags)
else:
self.clearLayout(self.vbox_tags)

clearLayout 方法不会取消显示 我的按钮。你能帮我解决一下问题吗?

真诚的。

最佳答案

clearLayout 有机会看到它之前,您正在覆盖以前的布局:

# previous self.vbox_tags layout goes bye-bye
self.vbox_tags = QtGui.QVBoxLayout()

if self.tags != None:
...
else:
# clearing a new empty one
self.clearLayout(self.vbox_tags)

这意味着如果 self.tags != None,您基本上是在清除一个空的新布局。我不确定你的确切用法是什么,你想总是创建一个新的布局......但至少先保存一个引用:

old_layout = self.vbox_tags
self.vbox_tags = QtGui.QVBoxLayout()
...
self.clearLayout(old_layout)

如果您总是创建一个新布局对象,您可能还想销毁旧布局对象:old_layout.deleteLater()

关于python - 我的小部件不想消失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11870251/

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