Tkinter - Fenster-Widget geschlossen und mit Namen und umgek

Fragen zu Tkinter.
Antworten
Kartoffel
User
Beiträge: 66
Registriert: Montag 7. April 2003, 17:08

Wenn ich mit
a=Toplevel ()
ein neues Fenster anlege und das danach schließe, zeigt a ja immer noch auf dieses Objekt. Gibt es da eine Methode um das fenster wieder zu öffnen?

Oder der Umgekehrte Fall:

Code: Alles auswählen

def funk:
      a=Toplevel()
Dann ist ja am Ende das Fenster noch offen aber es ist kein Name mehr zugewiesen. Hab ich da irgendwas zu befürchten, dass die Garbage-Collection den Widget löscht und das Fenster nicht mehr einwandfrei zu bedienen ist, weil es auf seine eigenen Daten nicht mehr zugreifen kann?
Milan
User
Beiträge: 1078
Registriert: Mittwoch 16. Oktober 2002, 20:52

zu 1.) nein, du hast keine Möglichkeit das Fenster wieder zu öffnen.
zu 2.) Das Fenster wird von der Garbage Collection nicht gelöscht werden, da es intern noch im Speicher hängt und einige andere Referenzen darauf gerichtet sind. Du kannst es also noch korrekt bedienen, aber nicht mehr von Python aus ansprechen. (Es sei denn, du lässt hast es an andere bezeichner zugewiesen, es in eine gloable liste/dictionary getan oder es mit der global-Anweisung generell global gemacht...)
Kartoffel
User
Beiträge: 66
Registriert: Montag 7. April 2003, 17:08

Danke!
Dookie
Python-Forum Veteran
Beiträge: 2010
Registriert: Freitag 11. Oktober 2002, 18:00
Wohnort: Salzburg
Kontaktdaten:

sowas nennt mann dann eine "hängende Referenz"
Ist zwar unter Python kein grosses Problem, aber Speicherlecks in C/C++ Programmen sind oft auf solche Konstruktionen zurückzuführen und kaum zu debuggen.
Also, was immer Du machst, mach das nicht :!:


Gruß

Dookie
Antworten