Seite 1 von 1
Inhalt eines selektierten Items einer QTableWidget ausgeben
Verfasst: Sonntag 14. Juni 2009, 16:14
von Caldar
Ich habe mittels QTableWidget eine Tabelle angelegt und mit Werten befüllt.
Nun möchte ich den Wert der ersten Spalte der selektierten Row auslesen.
Aber ich schaffe das nicht.
Kann mir jemand einen Tipp geben?
Verfasst: Sonntag 14. Juni 2009, 17:30
von EyDu
Verfasst: Sonntag 14. Juni 2009, 18:30
von DasIch
Code: Alles auswählen
indexes = [index for index in table_widget.selectedIndexes() if index.row() == 0]
data = map(table_widget.model().data, indexes)
Verfasst: Sonntag 14. Juni 2009, 18:37
von Dill
oder so (ungetestet)
Code: Alles auswählen
zeile = tabelle.selectedItems()[0].row()
item = tabelle.item(zeile, 0)
Verfasst: Sonntag 14. Juni 2009, 18:46
von DasIch
@Dill selectedItems ist unsortiert.
Verfasst: Sonntag 14. Juni 2009, 19:42
von lunar
Ja und?
Verfasst: Sonntag 14. Juni 2009, 20:06
von DasIch
Oh, stimmt. Ich hätte besser aufpassen sollen.
Verfasst: Sonntag 14. Juni 2009, 20:15
von Caldar
Danke für Eure Bsp., es ist aber so, dass diese nur den Objektnamen zurückgeben.
Ich bekomme also so etwas wie :
PyQt4.QtCore.QModelIndex object at 0x018AB420
wenn ich versuche, das Feld mit print aufzurufen. Ich mache hier einen ganz gravierenden Fehler, aber ich komme partout auf keinen grünen Zweig.
Ich möchte aber den Wert des 1.Elements der selektierten Reihe .
Die Doku auf
http://docs.huihoo.com/pyqt/pyqt4/html/ ... idget.html ist mir natürlich wohlbekannt, aber ich habe Schwierigkeiten, den Wert des Felds auszulesen und nicht dessen Objektnamen.
Ich habe den folgenden Code probiert:
Code: Alles auswählen
zeile = self.tabWidget.selectedItems()[0].row()
item = self.tabWidget.item(zeile, 0)
print item
und bekomme dann den Objektnamen wie oben angegeben (wohl des 1.Elements der selektierten Reihe), aber wie bekomme ich den Inhalt, meinetwegen als String (obwohl das Zahlen sind).
Verfasst: Sonntag 14. Juni 2009, 20:51
von lunar
RTFM
Im Übrigen verwaltet QTableWidget nun mal nur Zeichenketten. Für andere Datentypen musst du ein eigenes Modell implementieren.
Verfasst: Sonntag 14. Juni 2009, 20:54
von Dill
das kann nicht sein, dass du da ein PyQt4.QtCore.QModelIndex object bekommst:
QTableWidget Class Reference
QTableWidgetItem item (self, int row, int column)
sicher, dass self.tabWidget ein QTableWidget ist?
Verfasst: Sonntag 14. Juni 2009, 21:09
von Caldar
Dill hat geschrieben:
sicher, dass self.tabWidget ein QTableWidget ist?
Ja, ich habe es vorher so angelegt:
Verfasst: Sonntag 14. Juni 2009, 21:17
von Caldar
Ich glaube, ich habe folgendes in der Dokumentation überlesen:
QString QTableWidgetItem.text (self)
Returns the item's text.
Folgender Code liest den Inhalt des Elements der selektierten Zeile als Text aus und löst somit mein Problem:
Code: Alles auswählen
zeile = self.tabWidget.selectedItems()[0].row()
item = self.tabWidget.item(zeile, 0)
print item.text()
Gibt es die PyQt-Doku auch in deutsch bzw ohne dieses ganze C++-Gedöns? (und ja, ich weiss, dass PyQt auch nur ein Wrapper für Qt ist..aber verstehe den Sinn nicht, wenn z.B. folgende C++-Syntax in einer Python-Doku zu lesen ist):
QTableWidgetItem *newItem = new QTableWidgetItem(tr("%1").arg(
pow(row, column+1)));
tableWidget->setItem(row, column, newItem);
Verfasst: Sonntag 14. Juni 2009, 21:45
von Dill
ja, aber du müsstest konsequenterweise PyQt4.QtCore.QModelIndex referenz schauen und die hat keine text() methode.
die referenz gibt es sicher nicht auf deutsch.
wie du gesehen hast ist sie nochnichtmal komplett von C++ nach python übersetzt. aber stört das wirklich? wenn du dich damit angefreundet hast wirst du dich freuen, dass es für Qt nen haufen guter literatur gibt (für die C-version).
Verfasst: Sonntag 14. Juni 2009, 22:14
von Caldar
Ist eigentlich wxPython besser dokumentiert?
Ich bin immer noch am überlegen, für zukünftige Projekte wxPython auszuprobieren. Die Anzahl der Beiträge zu wxPython in Relation zu den PyQt-Threads spricht auch eine gewisse Sprache. Ich glaube aber, dass mit PyQt mehr Flexibilität möglich ist.
Wie seht ihr das? Wer kennt beide? Wer bevorzugt wxPython und wer PyQt?
Verfasst: Sonntag 14. Juni 2009, 23:32
von Dill
Qt ist meines erachtens sehr gut dokumentiert. Vor allem ist es so durchdacht entworfen, dass die meisten fragen sich mit einem blick in die referenz beantworten lassen. Du hast die referenz einfach nicht sorgsam genug gelesen.
Verfasst: Montag 15. Juni 2009, 09:31
von lunar
Qt4 ist eigentlich so gut dokumentiert wie nur wenige andere Bibliotheken ... so schwer kann das Lesen der C++-Beispiele gar nicht sein, dass man auf diese Doku verzichten würde

Die PyQt4-Doku benötigt man doch eigentlich nur, um die geänderten Signaturen der PyQt4-Objekte nachzulesen.