Вопрос по python – Как добавить изображение в Tkinter?

18

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

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

<code>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()
</code>
Я рекомендую вам прочитать книгу "Программирование на Python и TKinter". Очень хорошая книга, полная. Вы можете найти их на eBay по более низким ценам. Это предполагает, что вы действительно хотите использовать TKinter. Я рекомендую Qt вместо Tkinter, хотя frankliuao

Ваш Ответ

7   ответов
0

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

18

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

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

you probably have something missing in your code. please also check the code files's encoding.

make sure you have PIL package installed

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

роке (выше не весь ваш код, так как нет ни импорта, ни объявления вашегоpath переменная) или у вас есть другой тип ошибки.

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

3

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

Make sure that your script.py is at the same folder with the image you want to show.

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

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

-1

)

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

2

аpath указывает на. При этом некоторые форматы изображений, такие как .gif, .pgm (и .png, если tk.TkVersion & gt; = 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("https://i.stack.imgur.com/IgD2r.png", "lenna.png")
    url.urlretrieve("https://i.stack.imgur.com/sML82.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()
приятно, что вы используете только стандартную библиотеку

Похожие вопросы