wake-up-neo.com

Wie füge ich ein Bild in Tkinter hinzu?

Wie füge ich ein Bild in Tkinter hinzu?

Dies gab mir einen Syntaxfehler:

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

Es gibt keinen "Syntaxfehler" im obigen Code - er trat entweder in einer anderen Zeile auf (der obige Code ist nicht der gesamte Code, da keine Importe vorhanden sind, auch keine Deklaration Ihrer Variable path) oder Sie haben einen anderen Fehlertyp erhalten .

Das obige Beispiel funktionierte gut für mich, indem ich den interaktiven Interpreter testete.

7
jsbueno

Python 3.3.1 [MSC v.1600 32 Bit (Intel)] unter Win32 14.Mai.2013

Dies funktionierte für mich, indem ich den obigen Code befolgte

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

Der folgende Code funktioniert auf meiner Maschine

  1. vermutlich fehlt Ihnen etwas in Ihrem Code. 
  2. bitte überprüfen Sie auch die Kodierung der Codedateien. 
  3. vergewissern Sie sich, dass das PIL-Paket installiert ist

    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

Es ist keine Standard-Bibliothek von Python 2.7. Damit diese ordnungsgemäß funktionieren, und wenn Sie Python 2.7 verwenden, sollten Sie zuerst die PIL-Bibliothek herunterladen: Direkter Download-Link: http://effbot.org/downloads/PIL-1.1.7.win32-py2. 7.exe Führen Sie nach der Installation folgende Schritte aus:

  1. Stellen Sie sicher, dass sich Ihr script.py in im selben Ordner befindet wie das image, das Sie anzeigen möchten.
  2. Bearbeiten Sie Ihr 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()
    

Hoffentlich hilft das!

3
Bishop

Der tatsächliche Code gibt möglicherweise einen Fehler zurück, der auf dem Format der Datei basiert, auf die path verweist. Allerdings sind einige Bildformate wie .gif, .pgm (und .png, wenn tk.TkVersion> = 8.6) bereits von der PhotoImage - Klasse unterstützt.

Nachfolgend ein Beispiel, das Folgendes anzeigt:

 Lenna (.png)

oder wenn 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

Hier ist ein Beispiel für Python 3, das Sie für Python 2;) bearbeiten können.

from tkinter import *
from PIL import ImageTk, Image
from tkinter import filedialog
import os

root = Tk()
root.geometry("550x300+300+150")
root.resizable(width=True, height=True)

def openfn():
    filename = filedialog.askopenfilename(title='open')
    return filename
def open_img():
    x = openfn()
    img = Image.open(x)
    img = img.resize((250, 250), Image.ANTIALIAS)
    img = ImageTk.PhotoImage(img)
    panel = Label(root, image=img)
    panel.image = img
    panel.pack()

btn = Button(root, text='open image', command=open_img).pack()

root.mainloop()

enter image description here

1
Walid Bousseta

Dieser Code funktioniert für mich. Sie sollten auch berücksichtigen, dass andere Schaltflächen oder Beschriftungen in diesem Fenster nicht ordnungsgemäß funktionieren, wenn Sie .place() nicht verwenden.

from Tkinter import*
from PIL import Image, ImageTk

img  = Image.open("path/x.png") 
photo=ImageTk.PhotoImage(img)
lab=Label(image=photo).place(x=50,y=50)
0
beginner

Konvertieren Sie einfach das Bild im JPG-Format in das PNG-Format. Es wird 100% funktionieren.

0
Kazi

Es ist ein Python-Versionsproblem. Wenn Sie die neueste Version verwenden, funktioniert Ihre alte Syntax nicht und Sie erhalten diesen Fehler. Bitte folgen Sie dem Code von @ Josav09 und Sie werden in Ordnung sein. 

0
Akash Thakur