2016-05-10 10 views
1

Ich möchte listWidget Elemente bearbeiten, die über eine Schaltfläche programmgesteuert ausgewählt werden. Ich bin mir nicht ganz sicher, ob es eine Möglichkeit gibt, ausgewählte Objekte zu bearbeiten, ohne die ursprünglichen Elemente entfernen und die neue Bearbeitung hinzufügen zu müssen.Wie kann ich ein QListWidget-Objekt bearbeiten, ohne es zum Bearbeiten und Hinzufügen zu entfernen?

Ich sah dies ... aber ich bin mir nicht sicher, dass das ist, was ich brauche, wie kann ich nicht in einen neuen Wert übergeben:

selItems = listWidget.selectedItems() 

for item in selItems: 
    listWidget.editItem(item, "test") 

TypeError: QListWidget.editItem(QListWidgetItem): too many arguments 
+0

Wenn Sie "bearbeiten" sagen, möchten Sie, dass der Benutzer etwas eingeben kann? Oder möchten Sie es programmgesteuert ändern? –

+0

Ändern Sie es programmatisch selbst – Zak44

+0

Es ist schwer zu beantworten ohne weitere Details darüber, was genau Sie wollen. ARe Sie gerade versuchen, den Text eines Artikels zu setzen und initialisieren? Ein minimales Arbeitsbeispiel, das beschreibt, was Sie erwarten, wäre hier sehr hilfreich! (Siehe hierzu: http://stackoverflow.com/help/mcve) Wo soll dieser "Knopf" gedrückt werden? QListWidgets sind bereits per Doppelklick editierbar, es klingt, als würden Sie zu viel tun. Hast du schon ein funktionierendes QListWidget, ein sehr einfaches, das du posten kannst? – neuronet

Antwort

3

die editItem Methode wird verwendet, wenn Sie die Benutzer das Element zu bearbeiten. Wenn das Element bearbeitbar ist, wird standardmäßig ein QLineEdit Widget in der Zelle erstellt, damit der Benutzer den Text bearbeiten kann, sofern Sie kein QItemDelegate erstellt haben, um ein anderes Widget zum Bearbeiten zu erstellen.

Um den Text eines Artikels zu ändern, verwenden Sie einfach setText(). Sie können text() verwenden, um den aktuellen Text des Elements abzurufen.

sel_items = listWidget.selectedItems() 

for item in sel_items: 
    item.setText(item.text() + ' plus more text') 
+0

Was ist mit Beispiel, wenn ich SelectedItems nicht will, aber ich möchte zum Beispiel Artikel nach Index wählen? Ich habe keine Methode dafür gefunden. –

+1

@ ErikŠťastný Du meinst das? ['QListWidget.item (Zeile)'] (http://pyqt.sourceforge.net/Docs/PyQt4/qlistwidget.html#item) –

+0

Ja, aber bitte überprüfen Sie den unten stehenden Link. Ich habe einige Probleme bei der Verwendung von '.QListWidget.item (Zeile)' http://stackoverflow.com/questions/41182466/python-pyqt-edit-item-at-specific-row-in-qlistwidget-without-takeitem- und in –

Verwandte Themen