web-dev-qa-db-fra.com

Comment ajouter une image dans Tkinter?

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()
18
Damien

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.

7
jsbueno

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()
17
josav09

Le code suivant fonctionne sur ma machine

  1. il vous manque probablement quelque chose dans votre code. 
  2. veuillez également vérifier le codage des fichiers de code. 
  3. 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()
    
6
Takahiro

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:

  1. Assurez-vous que votre script.py est à le même dossier avec le image que vous voulez afficher.
  2. 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!

3
Bishop

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:

Lenna (.png)

ou si tk.TkVersion < 8.6:

Lenna (.gif)

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()
2
Nae

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. 

0
Akash Thakur