reference adden

Programmierung für GNOME und GTK+, GUI-Erstellung mit Glade.
Antworten
sylpheed
User
Beiträge: 40
Registriert: Dienstag 24. März 2009, 13:58

habe eine kleine frage zum adden einer reference:

habe ein widget, dass in ein notebook eingelassen ist. jetzt möchte ich dieses widget gerne dublizieren.

wenn ich jetzt aber

>> notebook.remove(widget)

nutze wird das widget zerstört. ich muss also noch eine reference adden, nur wie mach ich das.

wäre genial, wenn ihr mir da weiterhelfen könntet
besten dank im voraus
Benutzeravatar
Trundle
User
Beiträge: 591
Registriert: Dienstag 3. Juli 2007, 16:45

So ganz verstehe ich nicht, was du machen willst. Möchtest du dasselbe Widget in zwei verschiedene Container stecken? Denn das geht einfach nicht. Oder möchtest du ein Widget von einem Container in einen anderen setzen? Das geht mit der `reparent`- bzw. `unparent`-Methode.
"Der Dumme erwartet viel. Der Denkende sagt wenig." ("Herr Keuner" -- Bertolt Brecht)
sylpheed
User
Beiträge: 40
Registriert: Dienstag 24. März 2009, 13:58

ich dachte eigentlich, dass ich ein widget in zwei verschiedene container enbetten könnte. dass das nicht geht, weiß ich jetzt ja.

reparent und unparent lösen mein problem mit dem lösen aus dem container.

aber der grund für meine frage war die gtk class reference:
gtk.Container.remove

def remove(widget)

widget :
a current child of container

The remove() method removes widget from the container. widget must be inside the container. Note that the container will own a reference to widget, and that this may be the last reference held; so removing a widget from its container can cause that widget to be destroyed. If you want to use widget again, you should add a reference to it.
und hier halt der letzte satz. wie setze ich diese referenz. ich befürchte ja, dass ich das eigentlich wissen sollte, aber ...
Dauerbaustelle
User
Beiträge: 996
Registriert: Mittwoch 9. Januar 2008, 13:48

Wenn du das Widget löschst, und es nirgends mittels einer Variable referenziert hast, ist es halt.... genau, weg. Also, behalte das Widget in einer Variable ("Referenz" auf das Widget), dann bleibt es da ;)

Siehe auch http://arctrix.com/nas/python/gc/ bzw Stichwort "Garbage collector".
Antworten