2012-04-13 17 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を使いたいと仮定しています。私はTkinterの代わりにQtを推奨します – frankliuao

答えて

5

上記のコードには、「構文エラー」がない - があるとして、それのいずれかのいくつかの他のライン(上記で発生しましたが、あなたのコードのすべてではありませんあなたのpath変数の宣言も)、または他のエラータイプがあります。

上記の例は、インタラクティブなインタプリタをテストしてうまくいきました。

4

次のコードは、私のマシン

  1. あなたはおそらくあなたのコード内で欠けている何かを持っている上で動作します。
  2. コードファイルのエンコーディングも確認してください。
  3. あなたはPILパッケージは、Python 3.3.1

    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

をインストールされていることを確認してください[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の2のために編集することができますPythonの3のための一例である。)

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(およびtk.TkVersion> = 8.6の場合は.png)などの一部の画像フォーマットは、すでに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()