Bild wird nicht angezeigt

Fragen zu Tkinter.
Antworten
nickie123
User
Beiträge: 2
Registriert: Dienstag 12. Februar 2019, 19:10

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?
__deets__
User
Beiträge: 14522
Registriert: Mittwoch 14. Oktober 2015, 14:29

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()
"""
Benutzeravatar
__blackjack__
User
Beiträge: 13068
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@nickie123: Gibt es einen Grund für Python 2?
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
nickie123
User
Beiträge: 2
Registriert: Dienstag 12. Februar 2019, 19:10

Danke für die Hilfe,
ich benutze Python zwei , weil ich für das Projekt PIL verwenden will.
__deets__
User
Beiträge: 14522
Registriert: Mittwoch 14. Oktober 2015, 14:29

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.
Benutzeravatar
__blackjack__
User
Beiträge: 13068
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

Und auch unter Python 2 würde ich Pillow verwenden.
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
DMD-OS
User
Beiträge: 165
Registriert: Freitag 28. Dezember 2018, 13:52

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