Photoimage 顯示圖片
如果要在 tkinter 中顯示圖片,必須搭配 Pillow 函式庫的 ImageTk.Photoimage 建立圖片物件,再透過 Label 或 Canvas 顯示圖片,這篇教學會介紹如何在 tkinter 中顯示圖片。
快速導覽:
因為 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()
意見回饋
如果有任何建議或問題,可傳送「意見表單」給我,謝謝~