Python Hintergrundbild erscheint nicht

Fragen zu Tkinter.
Antworten
Duardo
User
Beiträge: 54
Registriert: Mittwoch 2. Juli 2014, 16:56

Hallo, ich habe versucht in meinem Programm ein Hintergrundbild einzufügen. Nur irgendwie wird es einfach gar nicht dargestellt. Hier ist mein Code:

Code: Alles auswählen

# -*- coding: cp1252 -*-
import Tkinter as tk

class SampleApp(tk.Tk):
    def __init__(self, *args, **kwargs):
        tk.Tk.__init__(self, *args, **kwargs)
        
        self.state("zoomed")

        container= tk.Frame(self)
        container.pack(side="top", fill="both", expand=True)
        container.grid_rowconfigure(0, weight=1)
        container.grid_columnconfigure(0, weight=1)

        self.frames={}
        for F in (fenster, fensta):
            frame= F(container, self)
            self.frames[F]=frame
            frame.grid(row=0, column=0, sticky="nsew")
            frame.pack_propagate(0)

        self.show_frame(fenster)

    def show_frame(self, c):
        frame=self.frames[c]
        frame.tkraise()

class fenster(tk.Frame):
    def __init__(self, parent, controller):
        tk.Frame.__init__(self, parent)

        hintergrund=tk.PhotoImage(file='blumen.gif')
        hintergrund_label = tk.Label(self, image=hintergrund)
        hintergrund_label.place(x=0, y=0, relwidth=1, relheight=1)

        label=tk.Label(self, text="Das ist die Startseite!")
        label.pack()

        button=tk.Button(self, text="Start",
                         command=lambda: controller.show_frame(fensta))
        button.pack()

class fensta(tk.Frame):
    def __init__(self, parent, controller):
        tk.Frame.__init__(self, parent)

        hintergrund=tk.PhotoImage(file='blumen.gif')
        hintergrund_label = tk.Label(self, image=hintergrund)
        hintergrund_label.place(x=0, y=0, relwidth=1, relheight=1)

        button=tk.Button(self, text="Sinnfreier Knopf")
        button.pack()
        
if __name__== "__main__":
    app=SampleApp()
    app.mainloop()
Schonmal Danke im voraus.
Sirius3
User
Beiträge: 17750
Registriert: Sonntag 21. Oktober 2012, 17:20

@Duardo: ich zitier einfach mal EyDu aus Deinem letzten Thread: http://www.python-forum.de/viewtopic.php?t=34387
EyDu hat geschrieben:Ich habe den Code mal kurz überflogen, so wie ich das sehe, hast du einen ganz typischen Fehler gemacht. Tkinter speichert nicht die Referenzen auf Bilder, also muss sich dein Code darum kümmern. Tut er das nicht, so wird das Bild durch den Garbage Collector gelöscht und steht Tkinter nicht mehr zur Verfügung. Halte also einfach eine Referenz zu den Bildern, indem du daraus ein Attribut deiner Model-Klasse machst.
Duardo
User
Beiträge: 54
Registriert: Mittwoch 2. Juli 2014, 16:56

@Sirius3: Achja, das hab ich schon fast vergessen. Danke! :D
Antworten