Hi, bin zwar auch noch neuling aber ich glaube das lässt sich ganz einfach erklären.
Eigentlich steckt alles in diesem Satz:
The connect_object() method is the same as the connect() method except that the handler is invoked with the specified gobject in place of the object invoking the connect_object() method.
Wenn du jetzt das "normale" widget.connect(...) benutzt, dann wird dem callback (also der Funktion, die aufgerufen wird, sobald das entsprechende Signal auftritt) als erster Parameter das widget übergeben, auf das du .connect angewand hast.
Beispiel:
Code: Alles auswählen
self.fenster.connect("delete-event", self.on_delete_event)
Sobald nun "fenster" das Signal "delete-event" aussendet (das passiert z.B. wenn man auf das "X" in der Titelleiste des Fensters klickt) wird die Callbackfunktion "self.on_delete_event" aufgerufen. Als ersten Parameter erhält diese Funktion jetzt das widget, welches das signal ausgesendet hat, in diesem Falle "fenster".
Für connect_object nehme ich jetzt mal dein Beispiel:
Code: Alles auswählen
button.connect_object("clicked", gtk.Widget.destroy, fenster)
Hier passiert folgendes:
Sobald der Benutzer den Button "button" anklickt, sendet dieser das Signal "clicked" aus. Weil du dieses Signal bereits mit einer Funktion verbunden hast, wird hier als Callbackfunktion "gtk.Widget.destroy" aufgerufen.
Jedoch wird dieser Funktion als erster Parameter nicht "button" übergeben (wie es der Fall wäre, wenn du statt connect_object einfach connect genommen hättest), sondern das entsprechende "gobject", dass du als zweiten Parameter bei connect_object angegeben hast.
In diesem Fall lautet der erste Parameter, der der Callbackfunktion übergeben wird also "fenster".
Hier findest du nochmal eine kurze Erklärung mit Beispielen:
http://www.pygtk.org/pygtk2reference/cl ... t--connect