Python3用tkinter和PIL实现看图工具


Posted in Python onJune 21, 2018

需求

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

最终显示效果

Python3用tkinter和PIL实现看图工具

Python 相关文章推荐
Python多线程编程(三):threading.Thread类的重要函数和方法
Apr 05 Python
回调函数的意义以及python实现实例
Jun 20 Python
python得到电脑的开机时间方法
Oct 15 Python
Python3爬虫使用Fidder实现APP爬取示例
Nov 27 Python
Python爬虫beautifulsoup4常用的解析方法总结
Feb 25 Python
python微信公众号开发简单流程实现
Mar 09 Python
Python3 requests模块如何模仿浏览器及代理
Jun 15 Python
pandas.DataFrame.drop_duplicates 用法介绍
Jul 06 Python
python--shutil移动文件到另一个路径的操作
Jul 13 Python
python获取时间戳的实现示例(10位和13位)
Sep 23 Python
浅谈python数据类型及其操作
May 25 Python
Python趣味实战之手把手教你实现举牌小人生成器
Jun 07 Python
Python3.4 tkinter,PIL图片转换
Jun 21 #Python
Python3实现转换Image图片格式
Jun 21 #Python
python3实现域名查询和whois查询功能
Jun 21 #Python
解决python写入mysql中datetime类型遇到的问题
Jun 21 #Python
详解Python下ftp上传文件linux服务器
Jun 21 #Python
Python爬取数据并写入MySQL数据库的实例
Jun 21 #Python
python实现黑客字幕雨效果
Jun 21 #Python
You might like
德生S2000电路分析
2021/03/02 无线电
php使用timthumb生成缩略图的方法
2016/01/22 PHP
XmlUtils JS操作XML工具类
2009/10/01 Javascript
JQuery Tips(3) 关于$()包装集内元素的改变
2009/12/14 Javascript
javascript多种数据类型表格排序代码分析
2010/09/11 Javascript
为jQuery.Treeview添加右键菜单的实现代码
2010/10/22 Javascript
javascript工具库代码
2012/03/29 Javascript
JS操作数据库的实例代码
2013/10/17 Javascript
JavaScript eval() 函数介绍及应用示例
2014/07/29 Javascript
ECMAScript6块级作用域及新变量声明(let)
2015/06/12 Javascript
微信小程序 教程之引用
2016/10/18 Javascript
JavaScript之WebSocket技术详解
2016/11/18 Javascript
JS控件bootstrap datepicker使用方法详解
2017/03/25 Javascript
解决vue build打包之后首页白屏的问题
2018/03/06 Javascript
JavaScript动态加载重复绑定问题
2018/04/01 Javascript
Nodejs libuv运行原理详解
2019/08/21 NodeJs
如何使用webpack打包一个库library的方法步骤
2019/12/18 Javascript
Vue中key的作用示例代码详解
2020/06/10 Javascript
Python3 入门教程 简单但比较不错
2009/11/29 Python
Python写入数据到MP3文件中的方法
2015/07/10 Python
Python实现简单网页图片抓取完整代码实例
2017/12/15 Python
基于pandas数据样本行列选取的方法
2018/04/20 Python
解决nohup重定向python输出到文件不成功的问题
2018/05/11 Python
python实现按首字母分类查找功能
2019/10/31 Python
使用numpngw和matplotlib生成png动画的示例代码
2021/01/24 Python
美国乡村商店:Plow & Hearth
2016/09/12 全球购物
巴西在线鞋店:Shoestock
2017/10/28 全球购物
M.M.LaFleur官网:美国职业女装品牌
2020/10/27 全球购物
海南地接欢迎词
2014/01/14 职场文书
融资租赁计划书
2014/04/29 职场文书
体现团队精神的口号
2014/06/06 职场文书
酒店餐厅2014重阳节活动策划方案
2014/09/16 职场文书
就业推荐表导师评语
2014/12/31 职场文书
教师继续教育反思周记
2015/06/25 职场文书
大学迎新生的欢迎词
2019/06/25 职场文书
导游词之江南周庄
2019/12/06 职场文书