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...