Comment ajouter une image dans Tkinter?
Cela m'a donné une erreur de syntaxe:
root = tk.Tk()
img = ImageTk.PhotoImage(Image.open(path))
panel = tk.Label(root, image = img)
panel.pack(side = "bottom", fill = "both", expand = "yes")
root.mainloop()
Il n'y a pas d '"erreur de syntaxe" dans le code ci-dessus - elle est apparue dans une autre ligne (la totalité de votre code ne correspond pas à votre code car il n'y a aucune importation, ni la déclaration de votre variable path
) .
L'exemple ci-dessus a bien fonctionné pour moi, en testant l'interprète interactif.
Python 3.3.1 [MSC v.1600 32 bits (Intel)] sur win32 le 14.mai.2013
Cela a fonctionné pour moi, en suivant le code ci-dessus
from tkinter import *
from PIL import ImageTk, Image
import os
root = Tk()
img = ImageTk.PhotoImage(Image.open("True1.gif"))
panel = Label(root, image = img)
panel.pack(side = "bottom", fill = "both", expand = "yes")
root.mainloop()
Le code suivant fonctionne sur ma machine
assurez-vous que le paquet PIL est installé
import Tkinter as tk
from PIL import ImageTk, Image
path = 'C:/xxxx/xxxx.jpg'
root = tk.Tk()
img = ImageTk.PhotoImage(Image.open(path))
panel = tk.Label(root, image = img)
panel.pack(side = "bottom", fill = "both", expand = "yes")
root.mainloop()
Ce n'est pas une lib standard de python 2.7. Donc, pour que ceux-ci fonctionnent correctement et si vous utilisez Python 2.7, vous devez d'abord télécharger la bibliothèque PIL: Lien de téléchargement direct: http://effbot.org/downloads/PIL-1.1.7.win32-py2. 7.exe Après l'avoir installé, procédez comme suit:
Editez votre script.py
from Tkinter import *
from PIL import ImageTk, Image
app_root = Tk()
#Setting it up
img = ImageTk.PhotoImage(Image.open("app.png"))
#Displaying it
imglabel = Label(app_root, image=img).grid(row=1, column=1)
app_root.mainloop()
J'espère que cela pourra aider!
Votre code actuel peut renvoyer une erreur en fonction du format du fichier pointé par path
. Cela dit, certains formats d'image tels que .gif, .pgm (et .png si tk.TkVersion> = 8.6) sont déjà pris en charge par la classe PhotoImage
.
Ci-dessous un exemple affichant:
ou si tk.TkVersion < 8.6
:
try: # In order to be able to import tkinter for
import tkinter as tk # either in python 2 or in python 3
except ImportError:
import Tkinter as tk
def download_images():
# In order to fetch the image online
try:
import urllib.request as url
except ImportError:
import urllib as url
url.urlretrieve("https://i.stack.imgur.com/IgD2r.png", "lenna.png")
url.urlretrieve("https://i.stack.imgur.com/sML82.gif", "lenna.gif")
if __== '__main__':
download_images()
root = tk.Tk()
widget = tk.Label(root, compound='top')
widget.lenna_image_png = tk.PhotoImage(file="lenna.png")
widget.lenna_image_gif = tk.PhotoImage(file="lenna.gif")
try:
widget['text'] = "Lenna.png"
widget['image'] = widget.lenna_image_png
except:
widget['text'] = "Lenna.gif"
widget['image'] = widget.lenna_image_gif
widget.pack()
root.mainloop()
C'est un problème de version Python. Si vous utilisez la dernière version, votre ancienne syntaxe ne fonctionnera pas et vous donnera cette erreur. Veuillez suivre le code de @ Josav09 et tout ira bien.