_tkinter.TclError: couldn’t recognize data in image file „hund.jpg“

Zum Anzeigen von Bildern im jpg-Format wird zusätzlich das PIL-Modul (Python Image Library) benötigt. Mit dem Tkinter eigenen tk.PhotoImage lassen sich nur die Bildformate gif und png anzeigen. Mit PIL lassen sich alle Bildformate anzeigen.

Hier die Tkinter-Variante:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

from functools import partial
import tkinter as tk

def bomben(button, button_image, event):
    button.configure(image=button_image)
    
app_win = tk.Tk()

tk_button_image = tk.PhotoImage(file="hund.png")
#tk_button_image = tk.PhotoImage(file="hund.gif")

button = tk.Button(app_win, text="j")
button.pack(padx=10, pady=10)
button.bind('<Button-1>', partial(bomben, button, tk_button_image))

app_win.mainloop()

Hier die PIL-Variante:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

from functools import partial
from PIL import Image, ImageTk

import tkinter as tk

def bomben(button, button_image, event):
    button.configure(image=button_image)
    
app_win = tk.Tk()

pil_button_image = Image.open("hund.jpg")
#pil_button_image = Image.open("hund.gif")
#pil_button_image = Image.open("hund.png")


tk_button_image = ImageTk.PhotoImage(pil_button_image)

button = tk.Button(app_win, text="j")
button.pack(padx=10, pady=10)
button.bind('<Button-1>', partial(bomben, button, tk_button_image))

app_win.mainloop()

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.