lokale/globale Variable

Fragen zu Tkinter.
Antworten
Nobima
User
Beiträge: 27
Registriert: Montag 4. Januar 2016, 18:26

Guten Tag,
in einer mit <after> sich wiederholenden Aktualisierungs-Funktion rufe ich eine Animation in der Klasse mit z.B
<lbl_with_my_gif = AnimatedGif(canvas, 'Flamme.gif', 0.05)>
auf.
Bei geänderter Bedingung in der Aktualisierung soll die Animation wieder mit
<lbl_with_my_gif.destroy>
gelöscht werden. Es funktioniert aber nicht, da
<lbl_with_my_gif >
als lokale Variable vorliegt.
Das übliche Erzeugen einer globalen Variable klappt nicht. Wie erzeuge ich in diesem Fall eine globale Variable um die Animation bei einem späterem Aufruf der Aktualisierungs-Funktion wieder löschen zu können ?
Nobima
User
Beiträge: 27
Registriert: Montag 4. Januar 2016, 18:26

Ich ziehe die Frage zurück. Ich habe versehentlich <lbl_with_my_gif > im Hauptprogramm und in der Funktion als global definiert.
Benutzeravatar
sparrow
User
Beiträge: 4195
Registriert: Freitag 17. April 2009, 10:28

Die Antwort ist: Gar nicht.
Man verwendet keine globalen Variablen.
Jede nicht-triviale Verwendung von Oberflächen erfordert den Einsatz von Klassen. Die speichern den Zustand.
Globale Variablen sind der falsche Weg.

Uneingerückt, also auf Modulebene, stehen nur die Importe und die Definition von Klassen, Funktionen und Konstanten. Konstanten zeichnen sich dadurch aus, dass sich ihr Wert nie ändert. Variablen sind da falsch.
Nobima
User
Beiträge: 27
Registriert: Montag 4. Januar 2016, 18:26

Vielen Dank für die Antwort, Gibt es ein Beispiel mit dem die Aussage verständlicher wird ?
Benutzeravatar
Dennis89
User
Beiträge: 1156
Registriert: Freitag 11. Dezember 2020, 15:13

Hallo,

hier ein kleines tkinter-Programm, das Klassen, 'after' und natürlich keine globalen Variablen enthält.
viewtopic.php?p=424576#p424576

Grüße
Dennis
"When I got the music, I got a place to go" [Rancid, 1993]
Antworten