Подтвердить что ты не робот

Как добавить изображение в Tkinter?

Как добавить изображение в Tkinter?

Это дало мне синтаксическую ошибку:

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()
4b9b3361

Ответ 1

В приведенном выше коде отсутствует "Синтаксическая ошибка" - она ​​либо возникла в какой-либо другой строке (выше не все из вашего кода, так как нет импорта, ни объявление вашей переменной path), либо вы получил другой тип ошибки.

Приведенный выше пример отлично работал у меня, тестируя интерактивный интерпретатор.

Ответ 2

Python 3.3.1 [MSC v.1600 32 бит (Intel)] на win32 14.May.2013

Это сработало для меня, следуя приведенному выше коду

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

Ответ 3

Следующий код работает на моей машине

  • у вас, вероятно, что-то не хватает в вашем коде.
  • пожалуйста, также проверьте кодировку файлов кода.
  • убедитесь, что у вас установлен пакет PIL

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

Ответ 4

Это не стандартная lib python 2.7. Поэтому, чтобы они работали правильно, и если вы используете Python 2.7, вы должны сначала загрузить библиотеку PIL: Прямая ссылка для скачивания: http://effbot.org/downloads/PIL-1.1.7.win32-py2.7.exe После его установки выполните следующие действия:

  • Убедитесь, что ваш script.py находится в той же папке с изображением , которое вы хотите показать.
  • Отредактируйте 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()
    

Надеюсь, что это поможет!

Ответ 5

Фактический код может возвращать ошибку в зависимости от формата файла path. При этом некоторые форматы изображений, такие как .gif,.pgm(и .png, если tk.TkVersion >= 8.6), уже поддерживаются PhotoImage.

Ниже приведен пример:

Lenna (.png)

или если 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("/img/06336ffdbc8d285597cfcc9fb07a232f.png", "lenna.png")
    url.urlretrieve("/img/6b430eb44b8ef0339d73538043eb6922.gif", "lenna.gif")


if __name__ == '__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()

Ответ 6

Вот пример для Python 3, который вы можете редактировать для Python 2;)

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

Ответ 7

Это проблема с версией Python. Если вы используете последнее, то ваш старый синтаксис не будет работать и даст вам эту ошибку. Пожалуйста, следуйте коду @Josav09, и все будет в порядке.

Ответ 8

Просто конвертируйте изображение в формате jpg в формат png. Это будет работать на 100%.

Ответ 9

Этот код работает для меня, также вы должны рассмотреть, есть ли у вас какие-либо другие кнопки или метки в этом окне, и вы не используете .place(), он не будет работать должным образом.

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)