Seite 1 von 1

Bild wird nicht angezeigt

Verfasst: Mittwoch 13. Februar 2019, 16:41
von nickie123
Hallo
Ich versuche gerade, ein Programm zu schreiben, dass ein Bild anzeigen muss. Das Programm muss dafür ein Bild anzeigen, doch dies klappt nicht. Ich habe ein wesentlich kleineres Testprogramm geschrieben und auch hier funktioniert es nicht, die Maße werden zwar übernommen, aber das Bild wird nicht angezeigt:

Code: Alles auswählen

import Tkinter

window = Tkinter.Tk()

label_image_to_show = Tkinter.Label(master=window)
label_image_to_show.config(image=Tkinter.PhotoImage(file="test.gif"))
label_image_to_show.pack()

window.mainloop()
Habt ihr ihr eine Idee, woran das liegen kann?

Re: Bild wird nicht angezeigt

Verfasst: Mittwoch 13. Februar 2019, 17:14
von __deets__
Die Dokumentation benennt das Problem recht klar http://effbot.org/tkinterbook/photoimage.htm

"""
Note: When a PhotoImage object is garbage-collected by Python (e.g. when you return from a function which stored an image in a local variable), the image is cleared even if it’s being displayed by a Tkinter widget.

To avoid this, the program must keep an extra reference to the image object. A simple way to do this is to assign the image to a widget attribute, like this:

label = Label(image=photo)
label.image = photo # keep a reference!
label.pack()
"""

Re: Bild wird nicht angezeigt

Verfasst: Mittwoch 13. Februar 2019, 17:31
von __blackjack__
@nickie123: Gibt es einen Grund für Python 2?

Re: Bild wird nicht angezeigt

Verfasst: Mittwoch 13. Februar 2019, 17:42
von nickie123
Danke für die Hilfe,
ich benutze Python zwei , weil ich für das Projekt PIL verwenden will.

Re: Bild wird nicht angezeigt

Verfasst: Mittwoch 13. Februar 2019, 17:45
von __deets__
Benutz doch Pillow, und dann geht das auch mit Python 3. PIL ist eh nicht mehr maintained, und python 2 wird Ende des Jahres abgeklemmt.

Re: Bild wird nicht angezeigt

Verfasst: Mittwoch 13. Februar 2019, 17:54
von __blackjack__
Und auch unter Python 2 würde ich Pillow verwenden.

Re: Bild wird nicht angezeigt

Verfasst: Sonntag 17. Februar 2019, 15:29
von DMD-OS
ich machs so:

Code: Alles auswählen

ich machs so :)
[code]
        # LOGO: ADD_FM - HEADER
        img_addfm = Image.open('logo_addfm.png').resize((70, 30))
        image_addfm = ImageTk.PhotoImage(img_addfm)
        self.lb_logo = tk.Label(self.header, image=image_addfm, width=70, height=35, bg='grey', relief=tk.RIDGE)
        self.lb_logo.image = image_addfm
        self.lb_logo.pack(side=tk.LEFT, padx=11)
da kann man auch alles schön einstellen...