Seite 1 von 1

reference adden

Verfasst: Donnerstag 2. April 2009, 22:44
von sylpheed
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

Verfasst: Freitag 3. April 2009, 00:18
von Trundle
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.

Verfasst: Freitag 3. April 2009, 12:50
von sylpheed
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 ...

Verfasst: Freitag 3. April 2009, 14:31
von Dauerbaustelle
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".