Also ich bin ganz neu bei Python und auch bei QT. Ich hab ein bisschen Delphi Erfahrung, weshalb es mir das Signal/Slot Konzept angetan hat, in Delphi funktioniert das nämlich ganz ähnlich.
Nun zu meinem (Anfänger) Problem, das ich trotz dieses Buches nicht gebacken bekomme. Ist übrigens nur zum üben, kein richtiges Projekt.
Folgender Beispielcode
Code: Alles auswählen
class TreeView(QListView):
def showxml(self, item):
print item.text
def __init__(self, *args):
apply(QListView.__init__,(self, ) + args)
self.connect(self, SIGNAL("selectionChanged(QListViewItem *)"), self.showxml)
def main(args):
app = QApplication(sys.argv)
QObject.connect(app, SIGNAL('lastWindowClosed()'),
app, SLOT('quit()'))
w = TreeView()
app.setMainWidget(w)
s=open("auftrag.xml").read() //
p.start(s) //hier wird das Treeview gefüllt, Code nicht enhalten, funktioniert aber soweit
w.show()
app.exec_loop()
if __name__=="__main__":
main(sys.argv)
Das Problem hierbei ist das verbinden des Signals selectionChanged(QListViewItem *) mit meinem Slot "showxml". In der Form wie er oben steht, frisst es der Interpreter ohne Fehlermeldung, allerdings zeigt "print item.text" nur folgende Ausgabe:
Code: Alles auswählen
"<built-in method text of sip.wrapper object at 0x009274C0>"
Code: Alles auswählen
self.connect(self, SIGNAL("selectionChanged(const QListViewItem &)"), self.showxml)
Code: Alles auswählen
self.connect(self, SIGNAL("selectionChanged(const QListViewItem &)"), self.showxml)
RuntimeError: Signal has wrong argument types for slot
Das ganze ist übrigens Python 2.3 unter Windows mit PyQT 3.8 NC
Ciao
Romulus