【完全独学Python】Tkinterの画像を表示する方法はこれだけ覚えて!

デスクトップアプリ

こんにちは!ゆーや(@yuyamanm118712)です。

こちらのページでは完全独学でWebプログラマとなった私が

デスクトップアプリには必須!!Tkinterでウィンドウに画像を表示する方法をご紹介します!

ゆーや
ゆーや

Tkinterの基本的な使い方は以下の記事を見てね!

Tkinterで「画面に画像を表示する」ためにはPhotoImagepillowというライブラリを使います!

この記事を通して、PhotoImagepillowを使いこなせるようになりましょう!

ゆーや
ゆーや

pillowが使えれば問題ないけど、

インストールが必要なので、状況に応じて選択してね!

画像表示に使うライブラリ

ゆーや
ゆーや

PhotoImagepillowどちらも画像を表示するライブラリだけど

どんな違いがあるのかな!

PhotoImage

メリット

  1. 簡単に使える
  2. 軽量!
ゆーや
ゆーや

インストールなしで使えるpython標準ライブラリだよ!

デメリット

  1. 対応フォーマットの制限…
  2. 機能の制限…
ゆーや
ゆーや

PNG,GIFなどしか対応していないよ!

単純に画像を表示する機能しかないので注意

pillow

メリット

  1. 多様な画像フォーマットに対応!
  2. 豊富な機能!

デメリット

  1. 追加のインストールが必要
  2. やや複雑
ゆーや
ゆーや

コッチを習得すれば画像関係は問題なし!

画像表示の基本

ゆーや
ゆーや

ここから「sample.png/ sample.jpg」という画像を用意して、

pythonファイルと同じ階層に配置しておいてね!

PhotoImage

import tkinter as tk
from tkinter import PhotoImage

# メインウィンドウの作成
root = tk.Tk()
root.title("tkinter 画像表示 - 完全独学Python")  # ウィンドウタイトル
root.geometry("1200x300")  # ウィンドウサイズ

# 画像の読み込み
img = PhotoImage(file="example.png")  # 画像ファイルのパスを指定

# ラベルに画像を設定して配置
label = tk.Label(root, image=img)
label.pack()

# ウィンドウを表示
root.mainloop()
ゆーや
ゆーや

画像が表示されたね!

画像が途中で切れちゃう人はウィンドウのサイズを大きくしてみよう!

pillow

import tkinter as tk
from PIL import Image, ImageTk

# メインウィンドウの作成
root = tk.Tk()
root.title("tkinter 画像表示 - 完全独学Python")  # ウィンドウタイトル
root.geometry("1200x300")  # ウィンドウサイズ

# 画像の読み込み
img = Image.open("example.jpg")  # 画像ファイルのパスを指定
tk_img = ImageTk.PhotoImage(img)  # Tkinterで使えるように変換

# ラベルに画像を設定して配置
label = tk.Label(root, image=tk_img)
label.pack()

# ウィンドウを表示
root.mainloop()
ゆーや
ゆーや

こちらも問題なく表示されたね!

JPGもちゃんと表示されている!

画像のサイズ変更

PhotoImage

ゆーや
ゆーや

PhotoImageだけでは縮小ができません…

pillow

import tkinter as tk
from PIL import Image, ImageTk

# メインウィンドウの作成
root = tk.Tk()
root.title("tkinter 画像表示 - 完全独学Python")  # ウィンドウタイトル
root.geometry("500x300")  # ウィンドウサイズ

# 画像の読み込みとリサイズ
img = Image.open("example.jpg")  # 画像ファイルのパスを指定
img = img.resize((200, 200))  # 画像のサイズを指定
tk_img = ImageTk.PhotoImage(img)  # Tkinterで使えるように変換

# ラベルに画像を設定して配置
label = tk.Label(root, image=tk_img)
label.pack()

# ウィンドウを表示
root.mainloop()
ゆーや
ゆーや

横も縦も縮小されたね!

ただし、画像の比をきちんと把握しておかないときれいに縮小できないね!

画像をCanvasに表示

pillow

import tkinter as tk
from PIL import Image, ImageTk

# メインウィンドウの作成
root = tk.Tk()
root.title("tkinter 画像表示 - 完全独学Python")  # ウィンドウタイトル
root.geometry("1200x300")  # ウィンドウサイズ

# キャンバスの作成
canvas = tk.Canvas(root, width=500, height=300)
canvas.pack()

# 画像の読み込み
img = Image.open("example.jpg")  # 画像ファイルのパスを指定
tk_img = ImageTk.PhotoImage(img)  # Tkinterで使えるように変換

# 画像をキャンバスに表示
canvas.create_image(250, 150, image=tk_img)  # 座標(250, 150)に画像を表示

# ウィンドウを表示
root.mainloop()
ゆーや
ゆーや

Tkinterでは、canvasにcreate_imageで画像を配置するのが基本!

ここまできっちり抑えておこう!

コメント

タイトルとURLをコピーしました