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)
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!