PyQT Signale und Slots Type Error 'sip.methoddescriptor'

Python und das Qt-Toolkit, erstellen von GUIs mittels des Qt-Designers.
Antworten
grorol2
User
Beiträge: 13
Registriert: Mittwoch 31. August 2011, 07:04

Hallo liebe Pythongemeinde,

ich versuche gerade meine ersten Schritte in der Oberflächenprgrammierung mit Python zu machen.
Aus dem Buch Galileo Computing habe ich folgendes Beispiel übernommen, bekomme es aber nicht zum laufen.
Die Fehlermeldung lautet: Type Error 'sip.methoddescriptor' object is not callable
Kann mir jemand erklären was diese Fehlermeldung bedeutet? bzw. wie ich das Problem in den Griff kriege. Meine bisherige Google Suche lies mich auf einen evtl. vorhandenen Buck in Python stoßen aber ich denke, dass ist eher unwahrscheinlich.
Vielen Dank schon mal für jegliche Hilfe

Code: Alles auswählen

import sys 
from PyQt4 import QtGui
from PyQt4 import QtCore
from testui import Ui_Dialog as Dlg

class MeinDialog(QtGui.QDialog, Dlg): 
	def __init__(self): 
		QtGui.QDialog.__init__(self) 
		self.setupUi(self)
		
	# Slots einrichten 
		self.connect(self.buttonOK, 
			QtCore.SIGNAL("clicked()"), self.onOK) 
		self.connect(self.buttonAbbrechen, 
			QtCore.SIGNAL("clicked()"), self.onAbbrechen)

	def onOK(self): 
        # Daten auslesen
		d = {} 
		print "text: %s" % self.vorname.text() 
		
		
		
		self.close()

	def onAbbrechen(self): 
		print "Schade" 
		self.close()
		
app = QtGui.QApplication(sys.argv) 
dialog = MeinDialog() 
dialog.show() 
sys.exit(app.exec_())
BlackJack

@grorol2: „Galileo Computing“ ist kein Bucht sondern ein Verlag. Und die haben mehrere Bücher über Python im Angebot. Deine Angabe ist also nicht eindeutig. Das umfassende Handbuch für Python von denen hat Schwächen.

Mit einer Fehlermeldung kommt in der Regel ein Traceback, der ist auch interessant für Leute die helfen wollen. Du hättest zumindest noch verraten können *wo* die Ausnahme ausgelöst wird.

Zum Verbinden von Signalen und Slots gibt es übrigens seit geraumer Zeit eine neue API, die etwas sicherer ist, und auch weniger Schreibarbeit bedeutet:

Code: Alles auswählen

self.connect(self.buttonOK, QtCore.SIGNAL("clicked()"), self.onOK)
# 
# =>
# 
self.buttonOK.clicked.connect(self.onOK)
lunar

@grorol2: Es gibt übrigens ein eigenes Unterforum für Fragen rund um PyQt.

@Mods: Vielleicht besser ins Qt-Unterforum verschieben?
grorol2
User
Beiträge: 13
Registriert: Mittwoch 31. August 2011, 07:04

Erst mal Danke für die Tipps, habe mir jetzt ein anderes Tutorial gesucht http://zetcode.com/tutorials/pyqt4/german/ und das Problem umgangen. Das es eine Untergruppe für PyQ gibt habe ich zu spät gesehen.

Falls mir noch jemand die allgemeine Bedeutung der Fehlermeldung erläutern könnte wäre ich Ihm sehr dankbar.
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

grorol2 hat geschrieben:Erst mal Danke für die Tipps, habe mir jetzt ein anderes Tutorial gesucht http://zetcode.com/tutorials/pyqt4/german/ und das Problem umgangen.
Wobei dort noch die alte Syntax gezeigt wird - zumindest ein zusätzlicher Blick in die PyQt-Doku sollte da noch drin sein; BlackJack hat ja ein wenig davon schon gezeigt.
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
BlackJack

@grorol2: Du versuchst ein Objekt vom Typ `sip.methoddescriptor` aufzurufen. Das ist aber nicht aufrufbar.
grorol2
User
Beiträge: 13
Registriert: Mittwoch 31. August 2011, 07:04

Danke werde ich tun bzw. hab ich bereits getan.
Antworten