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基础教程之基本内置数据类型介绍
Feb 20 Python
Python logging模块学习笔记
May 24 Python
Windows环境下python环境安装使用图文教程
Mar 13 Python
python2.6.6如何升级到python2.7.14
Apr 08 Python
python多进程实现文件下载传输功能
Jul 28 Python
python hough变换检测直线的实现方法
Jul 12 Python
Python Django 命名空间模式的实现
Aug 09 Python
Django之choices选项和富文本编辑器的使用详解
Apr 01 Python
Python用5行代码实现批量抠图的示例代码
Apr 14 Python
tensorflow常用函数API介绍
Apr 19 Python
Win10用vscode打开anaconda环境中的python出错问题的解决
May 25 Python
Python读写锁实现实现代码解析
Nov 28 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
Windows下部署Apache+PHP+MySQL运行环境实战
2012/08/31 PHP
PHP中auto_prepend_file与auto_append_file用法实例分析
2014/09/22 PHP
php集成环境xampp中apache无法启动问题解决方案
2014/11/18 PHP
Laravel实现用户注册和登录
2015/01/23 PHP
php开发微信支付获取用户地址
2015/10/04 PHP
PHP错误Warning:mysql_query()解决方法
2015/10/24 PHP
PHP中strnatcmp()函数“自然排序算法”进行字符串比较用法分析(对比strcmp函数)
2016/01/07 PHP
Thinkphp框架开发移动端接口(2)
2016/08/18 PHP
PHP实现上传图片到 zimg 服务器
2016/10/19 PHP
php写一个函数,实现扫描并打印出自定目录下(含子目录)所有jpg文件名
2017/05/26 PHP
jQuery fadeTo方法调整图片的透明度使用介绍
2013/05/06 Javascript
深入理解JavaScript系列(18):面向对象编程之ECMAScript实现
2015/03/05 Javascript
php结合imgareaselect实现图片裁剪
2015/07/05 Javascript
基于BootStrap Metronic开发框架经验小结【八】框架功能总体界面介绍
2016/05/12 Javascript
微信小程序 action-sheet底部菜单详解
2016/10/27 Javascript
node+experss实现爬取电影天堂爬虫
2016/11/20 Javascript
使用ionic在首页新闻中应用到的跑马灯效果的实现方法
2017/02/13 Javascript
最适应的vue.js的form提交涉及多种插件【推荐】
2018/08/27 Javascript
react native 获取地理位置的方法示例
2018/08/28 Javascript
Vue-component全局注册实例
2018/09/06 Javascript
JS数组求和的常用方法总结【5种方法】
2019/01/14 Javascript
原生js实现获取form表单数据代码实例
2019/03/27 Javascript
VUE 组件转换为微信小程序组件的方法
2019/11/06 Javascript
python和shell变量互相传递的几种方法
2013/11/20 Python
Python调用命令行进度条的方法
2015/05/05 Python
python list元素为tuple时的排序方法
2018/04/18 Python
python操作openpyxl导出Excel 设置单元格格式及合并处理代码实例
2019/08/27 Python
django之从html页面表单获取输入的数据实例
2020/03/16 Python
基于python实现ROC曲线绘制广场解析
2020/06/28 Python
解决python和pycharm安装gmpy2 出现ERROR的问题
2020/08/28 Python
西班牙宠物用品和食品网上商店:Tiendanimal
2019/06/06 全球购物
大学生个人自荐信
2014/02/24 职场文书
经理任命书模板
2014/06/06 职场文书
2016党员学习作风建设心得体会
2016/01/21 职场文书
apache基于端口创建虚拟主机的示例
2021/04/22 Servers
go结构体嵌套的切片数组操作
2021/04/28 Golang