加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

Python3用tkinter和PIL实现看图工具

发布时间:2020-12-16 21:08:30 所属栏目:Python 来源:网络整理
导读:需求 想做看图工具的,必然要支持jpg、png等常见格式,但tkinter是个纯粹的GUI库,不像GTK、QT那样大而全,所以只支持gif和ppm两种格式,局限很大,必须搭配图像处理库,才能实现基本的看图功能 在python生态系统里,最常用的图像处理库是PIL Python3下库的

需求

想做看图工具的,必然要支持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()

最终显示效果

您可能感兴趣的文章:

  • python使用Tkinter实现在线音乐播放器
  • Python Tkinter实现简易计算器功能
  • Python使用Tkinter实现机器人走迷宫
  • python+tkinter编写电脑桌面放大镜程序实例代码
  • Python+tkinter使用80行代码实现一个计算器实例
  • Python tkinter实现的图片移动碰撞动画效果【附源码下载】
  • python3使用tkinter实现ui界面简单实例
  • python3.3使用tkinter开发猜数字游戏示例
  • python使用turtle库绘制时钟
  • Python实现模拟时钟代码推荐
  • Python Tkinter模块实现时钟功能应用示例

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读