Comment faire pour supprimer l'Élément de la QListWidget
Je suis coincé à l'aide de myItem.hide() méthode à chaque fois que j'ai besoin de supprimer un Élément de la QListWidget liste. Le masquage d'un élément au lieu de les supprimer/retirer rend les choses inutilement complexe. Je vous serais reconnaissant si vous me montrer comment faire pour supprimer le Point de ListWidget de façon permanente.
from PyQt4 import QtGui, QtCore
class MyApp(object):
def __init__(self):
super(MyApp, self).__init__()
self.mainWidget = QtGui.QWidget()
self.mainLayout = QtGui.QVBoxLayout()
self.mainWidget.setLayout(self.mainLayout)
self.hLayout = QtGui.QHBoxLayout()
self.mainLayout.insertLayout(0, self.hLayout)
self.listA=QtGui.QListWidget()
for i in range(3):
self.listA.addItem('Item '+str(i))
self.hLayout.addWidget(self.listA)
self.buttonGroupbox = QtGui.QGroupBox()
self.buttonlayout = QtGui.QVBoxLayout()
self.buttonGroupbox.setLayout(self.buttonlayout)
okButton = QtGui.QPushButton('Remove Selected')
okButton.clicked.connect(self.removeSel)
self.buttonlayout.addWidget(okButton)
self.mainLayout.addWidget(self.buttonGroupbox)
self.mainWidget.show()
sys.exit(app.exec_())
def removeSel(self):
listItems=self.listA.selectedItems()
if not listItems: return
for item in listItems:
print type(item), dir(item)
OriginalL'auteur alphanumeric | 2014-05-23
Vous devez vous connecter pour publier un commentaire.
Je ne sais pas pourquoi, mais removeItemWidget ne fonctionnent pas comme prévu. Vous devez utiliser prenez le point à la place:
takeItem() fonctionne pour moi comme prévu! Excellent travail! Merci!
Je ne me souviens pas pourquoi mais quand j'ai dû faire la même chose, je l'ai fait en deux étapes: d'obtenir les lignes à supprimer. Les trier dans l'ordre décroissant. Faire le
takeItem(row)
pour chaque ligne. Peut-être que j'étais juste fatigué, ou il y a peut-être un problème de sélection multiple. Je n'ai pas le temps d'essayer, si juste être prudent :).removeItemWidget
ne pas supprimer un élément à partir d'unQListWidget
parce qu'il n'est pas prévu de le faire. Il est fait pour supprimer un widget qui est fixé à un élément de laQListWidget
.takeItem(row)
est en effet la bonne façon de supprimer un élément de la liste.OriginalL'auteur Salvatore Avanzo
De poster ici un exemple montrant comment mettre en œuvre même approche, mais maintenant appliquer à
QTreeWidget
qui un peu plus concernés que lesQListWidget
.OriginalL'auteur alphanumeric
Un ListWidget est une liste de ListWidgetItems. Un ListWidgetItems peut être affecté à un widget personnalisé pour remplacer la valeur par défaut, donc removeItemWidget() supprime uniquement le widget personnalisé. D'où la nécessité pour takeItem, qui apparaît de l'élément de la liste et retourne (à la manière d'une liste python fonctionne)
OriginalL'auteur Robot Inc