2012-04-13 3 views
13

Как добавить изображение в 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() 
+0

Я рекомендую вам прочитать книгу "Python и программирование Tkinter". Очень хорошая книга, тщательная. Вы можете найти их на eBay по более низким ценам. Это предполагает, что вы действительно хотите использовать TKinter. Я рекомендую Qt вместо Tkinter, хотя – frankliuao

ответ

5

Там нет «Ошибка синтаксиса» в коде выше - это либо ocurred в какой-либо другой линии (выше не все из вашего кода, так как есть нет импорта, ни объявление вашей переменной path), либо у вас есть другой тип ошибки.

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

4

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

  1. вы, вероятно, что-то не хватает в вашем коде.
  2. , пожалуйста, также проверьте кодировку файлов кода.
  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() 
    
10

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

Это работало me, выполнив приведенный выше код

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

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

  1. Убедитесь, что ваш сценарий .py находится в в той же папке сimage Вы хотите показать.
  2. Корректировать 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

Вот пример для 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

0

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

0

Ваш реальный код может вносить ошибки на основе формата файла 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("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() 
Смежные вопросы