J'essaie de mettre une image jpg sur une toile tkinter. tkinter me donne cette erreur:
n'a pas pu reconnaître les données du fichier image
J'utilise le code de la documentation:
canv = Canvas(root, width=80, height=80, bg='white')
canv.grid(row=2, column=3)
img = PhotoImage(file="bll.jpg")
canv.create_image(20,20, anchor=NW, image=img)
Même chose avec les images png. Même essayé de mettre une image dans un widget d'étiquette, mais a obtenu la même erreur. Qu'est-ce qui ne va pas?
J'utilise Python 3 sur Mac. Python et l'image sont dans le même dossier.
Votre code semble correct, cela fonctionne pour moi sur Windows 7 (Python 3.6):
from tkinter import *
root = Tk()
canv = Canvas(root, width=80, height=80, bg='white')
canv.grid(row=2, column=3)
img = PhotoImage(file="bll.jpg")
canv.create_image(20,20, anchor=NW, image=img)
mainloop()
résultant en cette interface graphique tkinter:
avec cette image comme bll.jpg
:
(imgur l'a converti en bll.png
mais cela fonctionne aussi pour moi.)
Plus d'options:
gif
. Essayez d'utiliser un .gif
image.PIL
comme indiqué dans cette réponse . Mise à jour: Solution avec PIL
:
from tkinter import *
from PIL import ImageTk, Image
root = Tk()
canv = Canvas(root, width=80, height=80, bg='white')
canv.grid(row=2, column=3)
img = ImageTk.PhotoImage(Image.open("bll.jpg")) # PIL solution
canv.create_image(20, 20, anchor=NW, image=img)
mainloop()
J'obtenais le même problème. J'ai des fenêtres et Python 3.6. J'ai donc trouvé deux solutions pour cela soit vous utilisez/convertissez en .png
image (avec la même fonction que vous avez utilisée):
photo = PhotoImage('xyz.png')
l = Label(image = photo)
l.pack()
ou si vous voulez lire .jpg
fichier uniquement, puis utilisez la bibliothèque PIL pour lire et afficher une image comme celle-ci:
from PIL import ImageTk, Image
img = ImageTk.PhotoImage(Image.open("xyz.jpg"))
l=Label(image=img)
l.pack()
Installez PIL/Oreiller avec:
pip install Pillow
ou:
Sudo pip install pillow
from PIL import Image
from PIL import ImageTk
import tkinter
image = Image.open('bll.jpg')
image = image.resize((20, 20))
image = ImageTk.PhotoImage(image)
canv = Canvas(root, width=80, height=80, bg='white')
canv.grid(row=2, column=3)
img = PhotoImage(file=image)
L'utilisation de .PNG au lieu de .JPG est également préférable pour Tkinter.