Heim > Backend-Entwicklung > Python-Tutorial > Warum werden meine Tkinter-Bilder nicht angezeigt, wenn sie in einer Funktion erstellt werden?

Warum werden meine Tkinter-Bilder nicht angezeigt, wenn sie in einer Funktion erstellt werden?

Susan Sarandon
Freigeben: 2025-01-03 10:20:38
Original
1024 Leute haben es durchsucht

Why Aren't My Tkinter Images Displaying When Created in a Function?

Tkinter-Bild wird nicht angezeigt, wenn es in einer Funktion erstellt wird

In Tkinter kann das Erstellen eines Bildes innerhalb einer Funktion dazu führen, dass das Bild nicht angezeigt wird . Dieses Problem tritt auf, weil die Variable, die auf das Bild verweist (in diesem Fall das Foto), eine lokale Variable innerhalb der Funktion ist. Sobald die Funktion abgeschlossen ist, werden die lokalen Variablen durch Garbage Collection erfasst und der Verweis auf das Bild geht verloren.

Um dieses Problem zu beheben, müssen Sie einen Verweis auf das Bild innerhalb der Klasse speichern, die die Funktion instanziiert hat. Dadurch wird sichergestellt, dass das Bild nicht durch Müll gesammelt wird und während der gesamten Lebensdauer der Klasse zugänglich bleibt.

Sie können den Code beispielsweise wie folgt ändern:

class Test:
    def __init__(self, master):
        canvas = tkinter.Canvas(master)
        canvas.grid(row = 0, column = 0)
        self.photo = tkinter.PhotoImage(file = './test.gif')
        canvas.create_image(0, 0, image=self.photo)
Nach dem Login kopieren

Durch Zuweisen des Fotos Variable zu self erstellen wir eine Instanzvariable, die während der gesamten Lebensdauer der Testklasse bestehen bleibt.

Das obige ist der detaillierte Inhalt vonWarum werden meine Tkinter-Bilder nicht angezeigt, wenn sie in einer Funktion erstellt werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage