1. 程式人生 > >Python3下用tkinter和PIL實現簡單的顯示圖片

Python3下用tkinter和PIL實現簡單的顯示圖片

想做看圖工具的,必然要支援jpg、png等常見格式,但tkinter是個純粹的GUI庫,不像GTK、QT那樣大而全,所以只支援gif和ppm兩種格式,侷限很大,必須搭配影象處理庫,才能實現基本的看圖功能

在python生態系統裡,最常用的影象處理庫是PIL

Python3下庫的安裝
這兩個庫在python3下跟python2有一定差異:
tkinter首字母變成小寫
PIL官方還不支援Python3,但有個fork叫Pillow,可以替代官方並且介面保持不變,需要pip install Pillow安裝

技術原理
那麼怎麼讓PIL讀取jpg檔案生成的記憶體物件被tkinter處理呢?PIL的開發人員很貼心的提供了一個PhotoImage類,跟tkinter包裡的同名類介面相容,所以可以直接將PIL生成的PhotoImage物件賦給tkinter中能接收PhotoImage入參的所有控制元件(比如Label、Canvas等)

程式碼示例

#encoding=utf-8
import tkinter as tk
from PIL import Image, ImageTk

class App(tk.Frame):
    def __init__(self, master=None):
        super().__init__(master, width=400, height=300)
        self.pack()
        self.pilImage = Image.open("CSDN.png")
        self.tkImage = ImageTk.PhotoImage(image=self.pilImage)
        self.label = tk.Label(self, image=self.tkImage)
        self.label.pack()

    def
processEvent(self, event):
pass if __name__ == '__main__': root = tk.Tk() app = App(root) root.mainloop()