QtreeWidget

Python und das Qt-Toolkit, erstellen von GUIs mittels des Qt-Designers.
Antworten
userpython
User
Beiträge: 6
Registriert: Sonntag 15. November 2009, 16:27

Hallo zusammen,

ich habe ein Problem mit dem QtreeWidget. Ich kann das Item, was man anklickt nich abfragen.

Code: Alles auswählen

import sys
import sqlite3
from PyQt4 import QtGui, QtCore
from hilfe import Ui_Dialog as Dlg


class MainHilfe(QtGui.QDialog, Dlg): 
    def __init__(self):
        
        QtGui.QDialog.__init__(self) 
        self.setupUi(self)

        self.connect(self.treeWidget,
                QtCore.SIGNAL("itemClicked(QTreeWidgetItem*,int)"), self.onTest)


    def onTest(self,zahl):
        a=self.treeWidget.currentItem()
        
        print str(a)
        
        

appHilfe=QtGui.QApplication(sys.argv)
hilfe=MainHilfe()
hilfe.show()
appHilfe.exec_()  
Mit der Methode currentItem bekomme ich zwar das Objekt zurückgegeben aber ich kann es nicht auslesen. Bei der Methode .text()
kommt immer der Fehler:

Code: Alles auswählen

TypeError: insufficient number of arguments to QTreeWidgetItem.text()
Deshalb meine Frage, wie bekomme ich

<PyQt4.QtGui.QTreeWidgetItem object at 0x01FE59C0>

abgefragt bzw. umgewandelt.
habe so schon viel mit Qt gearbeitet, aber hier weiß ich wirklich nicht mehr weiter.
franzf
User
Beiträge: 78
Registriert: Samstag 29. August 2009, 10:21

1) Beim SLOT kannst du weniger Argumente mitgeben, als das SIGNAL sendet. Dezimieren geht aber nur von hinten. Deshalg statt "zahl" ein "item".
Das ist dann direkt das QTreeWidgetItem, auf das geklickt wurde.

2) Hat "text()" ein Argument, und das ist dein Fehler. Denn erwartet wird die Spalte, aus der du den text lesen willst.
Und genau aus diesem Grund solltest du das zweite Argument "zahl" nicht unterschlagen ;)

So schaut es dann in deinem SLOT aus:

Code: Alles auswählen

def onTest(self, item, col):
    print item.text(col)
userpython
User
Beiträge: 6
Registriert: Sonntag 15. November 2009, 16:27

Vielen dank hat mir sher geholfen. die zeile in die klammern einzufügen ist mir nicht eingefallen.
Antworten