Python3下用tkinter和PIL實現簡單的顯示圖片
阿新 • • 發佈:2019-02-06
想做看圖工具的,必然要支援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()