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 相关文章推荐
Pyhton中防止SQL注入的方法
Feb 05 Python
详解Django缓存处理中Vary头部的使用
Jul 24 Python
python之matplotlib学习绘制动态更新图实例代码
Jan 23 Python
numpy 进行数组拼接,分别在行和列上合并的实例
May 08 Python
Window 64位下python3.6.2环境搭建图文教程
Sep 19 Python
python最小生成树kruskal与prim算法详解
Jan 17 Python
python实现桌面气泡提示功能
Jul 29 Python
Pytorch损失函数nn.NLLLoss2d()用法说明
Jul 07 Python
详解Tensorflow不同版本要求与CUDA及CUDNN版本对应关系
Aug 04 Python
深入了解Python装饰器的高级用法
Aug 13 Python
python利用tkinter实现图片格式转换的示例
Sep 28 Python
python从ftp获取文件并下载到本地
Dec 05 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
php中使用base HTTP验证的方法
2015/04/20 PHP
浅谈Yii乐观锁的使用及原理
2017/07/25 PHP
JavaScript 替换Html标签实现代码
2009/10/14 Javascript
最新28个很棒的jQuery 教程
2011/05/28 Javascript
jquery中常用的函数和属性详细解析
2014/03/07 Javascript
Javascript 浮点运算精度问题分析与解决
2014/03/26 Javascript
Jquery焦点图实例代码
2014/11/25 Javascript
使用JavaScript刷新网页的方法
2015/06/04 Javascript
jquery实现简单的二级导航下拉菜单效果
2015/09/07 Javascript
浅谈JavaScript for循环 闭包
2016/06/22 Javascript
[原创]JS基于FileSaver.js插件实现文件保存功能示例
2016/12/08 Javascript
jQuery中弹出iframe内嵌页面元素到父页面并全屏化的实例代码
2016/12/27 Javascript
vue项目实现github在线预览功能
2018/06/20 Javascript
vue.js 图片上传并预览及图片更换功能的实现代码
2018/08/27 Javascript
微信 jssdk 签名错误invalid signature的解决方法
2019/01/14 Javascript
解决微信小程序中转换时间格式IOS不兼容的问题
2019/02/15 Javascript
Ant-design-vue Table组件customRow属性的使用说明
2020/10/28 Javascript
解决vue init webpack 下载依赖卡住不动的问题
2020/11/09 Javascript
编写同时兼容Python2.x与Python3.x版本的代码的几个示例
2015/03/30 Python
基于Python3 逗号代码 和 字符图网格(详谈)
2017/06/22 Python
Python爬豆瓣电影实例
2018/02/23 Python
解决Pycharm出现的部分快捷键无效问题
2018/10/22 Python
canvas使用注意点总结
2013/07/19 HTML / CSS
使用phonegap获取位置信息的实现方法
2017/03/31 HTML / CSS
美国正宗奢华复古手袋、珠宝及配饰网站:What Goes Around Comes Around
2018/07/21 全球购物
怎样客观的做好自我评价
2013/12/28 职场文书
室内拓展活动方案
2014/02/13 职场文书
2014中考励志标语
2014/06/05 职场文书
班级体育活动总结
2014/07/05 职场文书
代办委托书怎么写
2014/08/01 职场文书
2015元旦节寄语
2014/12/08 职场文书
因公司原因离职的辞职信范文
2015/05/12 职场文书
高中生社会实践心得体会
2016/01/14 职场文书
导游词之安徽醉翁亭
2020/01/10 职场文书
python 利用 PIL 将数组值转成图片的实现
2021/04/12 Python
总结一些Java常用的加密算法
2021/06/11 Java/Android