Photoimage 顯示圖片 - Tkinter 教學 ( Python )

Photoimage 顯示圖片

如果要在 tkinter 中顯示圖片,必須搭配 Pillow 函式庫的 ImageTk.Photoimage 建立圖片物件,再透過 Label 或 Canvas 顯示圖片,這篇教學會介紹如何在 tkinter 中顯示圖片。

快速導覽:

使用 Label 顯示圖片

使用 Canvas 顯示圖片

因為 Google Colab 不支援 tkinter,所以請使用本機環境 ( 參考:使用 Python 虛擬環境 ) 或使用 Anaconda Jupyter 進行實作 ( 參考:使用 Anaconda )。

搭配 Label 顯示圖片

tkinter 本身具有 Photoimage 方法,但該方法支援度不高又容易失效 ( 僅支援特定顏色 gif 檔案 ),因此必須搭配 Pillow 函式庫的 ImageTk.Photoimage 建立 tk 圖片物件,建立 tk 圖片物件後,將 Label 的 image 參數指向該物件,執行後視窗裡就會出現圖片。

import tkinter as tk

from PIL import Image, ImageTk

root = tk.Tk()

root.title('oxxo.studio')

root.geometry('200x200')

img = Image.open('mona.jpg') # 開啟圖片

tk_img = ImageTk.PhotoImage(img) # 轉換為 tk 圖片物件

label = tk.Label(root, image=tk_img, width=200, height=200) # 在 Lable 中放入圖片

label.pack()

root.mainloop()

使用 Label 放入圖片預設會擺在正中間,設定 anchor 參數就能調整位置 ( 參考「Label 標籤參數設定」 )。

import tkinter as tk

from PIL import Image, ImageTk

root = tk.Tk()

root.title('oxxo.studio')

root.geometry('200x200')

img = Image.open('mona.jpg')

tk_img = ImageTk.PhotoImage(img)

label = tk.Label(root, image=tk_img, width=200, height=200, anchor='nw') # 設定 anchor

label.pack()

root.mainloop()

使用 Canvas 顯示圖片

如果是使用 tkinter 的 Canvas 元件,可以在 Pillow 的 ImageTk.Photoimage 建立 tk 圖片物件後,透過 create_image 方法建立物件。

import tkinter as tk

from PIL import Image, ImageTk

root = tk.Tk()

root.title('oxxo.studio')

root.geometry('400x400')

img = Image.open('mona.jpg')

tk_img = ImageTk.PhotoImage(img)

canvas = tk.Canvas(root, width=400, height=400)

canvas.create_image(0, 0, anchor='nw', image=tk_img) # 在 Canvas 中放入圖片

canvas.pack()

root.mainloop()

意見回饋

如果有任何建議或問題,可傳送「意見表單」給我,謝謝~