web-dev-qa-db-ja.com

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

上記のコードには「構文エラー」はありません-他の行で発生しました(インポートがないため、上記のコードはすべてではありません。path変数の宣言もありません)他のエラータイプがあります。

上記の例は、インタラクティブなインタープリターでテストして、うまく機能しました。

10
jsbueno

Python 3.3.1 [MSC v.1600 32ビット(Intel)] on 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()
22
josav09

次のコードは私のマシンで動作します

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

python 2.7の標準ライブラリではありません。したがって、これらが適切に機能するために、Python 2.7を使用している場合は、最初にPILライブラリをダウンロードしてください。 :直接ダウンロードリンク: http://effbot.org/downloads/PIL-1.1.7.win32-py2.7.exe インストール後、次の手順に従います。

  1. script.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()
    

お役に立てば幸いです!

4
loxsat

実際のコードは、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()
3
Nae

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

1
Walid Bousseta

このコードは私のために機能します。また、そのウィンドウに他のボタンやラベルがあり、.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)
0
beginner

Jpg形式の画像をpng形式に変換するだけです。 100%動作します。

0
Kazi

これはPythonバージョンの問題です。最新のものを使用している場合、古い構文は機能せず、このエラーが発生します。@ Josav09のコードに従ってください。問題ありません。

0
Akash Thakur