Bild in Button wird nicht Angezeigt.

Fragen zu Tkinter.
Antworten
schnibli
User
Beiträge: 27
Registriert: Mittwoch 19. November 2014, 18:52

Hallo ich habe das Problem das mein Bild nicht angezeigt wird:

Code: Alles auswählen

from tkinter import ttk
import sys
import socket

class Uebersicht:
    
    def __init__(self, master):        
        self.master = master
        self.frame = tk.Frame(self.master)
        kalendermenu=PhotoImage(file='kalender.gif')
        self.button1 = tk.Button(self.frame, image=kalendermenu, width = 25, command = self.new_window) ## Hier wird das bild nicht angezeigt
        self.button1.pack()
        self.frame.pack()
        self.button2 = tk.Button(self.frame, text = 'Präsentation (Fotos)', width = 25, command = self.new_window)
        self.button2.pack()
        self.frame.pack()
        self.button3 = tk.Button(self.frame, text = 'BMU-Clip Settings', width = 25, command = self.new_window)
        self.button3.pack()
        self.frame.pack()
        
    def new_window(self):
        self.newWindow = tk.Toplevel(self.master)
        self.app = Kalender(self.newWindow)

class Kalender:
    def __init__(self, master):
        self.master = master
        self.frame = tk.Frame(self.master)
                
def main(): 
    root = tk.Tk()
    root.title("Präsentation")
    w, h = root.winfo_screenwidth(), root.winfo_screenheight()
    root.overrideredirect(1)
    root.geometry("%dx%d+0+0" % (w, h))
    Kalender = "aus"
    app = Uebersicht(root)
    root.mainloop()
    
if __name__ == '__main__':
    main()
Kann mir jemand helfen :)
Sirius3
User
Beiträge: 17738
Registriert: Sonntag 21. Oktober 2012, 17:20

@schinbli: Du mußt eine Instanz auf das PhotoImage-Objekt irgendwo speichern, sonst wird die lokale Variable kalendermenu nach Beendigung von __init__ abgeräumt und das Bild vom Garbage-Collector entsorgt.
schnibli
User
Beiträge: 27
Registriert: Mittwoch 19. November 2014, 18:52

Danke,

Aber blöde frage, wie kann ich dies "irgendwo speichern"?
Sirius3
User
Beiträge: 17738
Registriert: Sonntag 21. Oktober 2012, 17:20

Z.B. direkt in der Button-Instanz:

Code: Alles auswählen

self.button1.image = kalendermenu
schnibli
User
Beiträge: 27
Registriert: Mittwoch 19. November 2014, 18:52

Vielen Dank :)
Antworten