2012-04-13 1381 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 2017-07-02 04:34:13

回答

5

沒有「語法錯誤」在上面的代碼 - 它在一些其他線路或者內容時發生(上面是不是所有的代碼,因爲有沒有進口,既沒有你的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位(英特爾)]在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() 
2

這不是python 2.7的標準庫。因此,爲了使這些正常工作,如果你正在使用Python 2.7,你應該首先下載PIL庫:直接下載鏈接:http://effbot.org/downloads/PIL-1.1.7.win32-py2.7.exe 安裝後,請按照下列步驟操作:

  1. 確保您腳本.py位於相同的文件夾圖片要顯示。
  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指向的格式,您的實際代碼可能會返回錯誤。也就是說,PhotoImage類已經支持一些圖像格式,例如.gif,.pgm(和.png,如果tk.TkVersion> = 8.6)。

下面是顯示一個例子:

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