需求

想做看图工具的,必然要支持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中self image_Python3用tkinter和PIL实现看图工具相关推荐

  1. Python3下用tkinter和PIL实现简单的看图工具

    需求 想做看图工具的,必然要支持jpg.png等常见格式,但tkinter是个纯粹的GUI库,不像GTK.QT那样大而全,所以只支持gif和ppm两种格式,局限很大,必须搭配图像处理库,才能实现基本的 ...

  2. python中文昵称-官方出品 Python 中文文档!拜托,别再说看不懂了

    点击" 开发者技术前线 ",选择"星标�" 在看|星标|留言, 真爱 回复"666",获取一份技术人专属大礼包 作者:机器之心 参与:思源 ...

  3. class括号里的object_听说你在找python中class的定义及使用教程?看这里就对了

    这篇文章主要介绍了python中class的定义及使用,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下. 类的定义 class classname[(父类名)]: ...

  4. Python中if __name__=='__main__': 理解与总结(看这篇就够了,一文扫清疑惑!)

    前言 在Python当中,如果代码写得规范一些,通常会写上一句if '__name__'=='__main__:'作为程序的入口,但似乎没有这么一句代码,程序也能正常运行.这句代码多余吗?原理又在哪里 ...

  5. python中oserror捕获_Python assert异常处理(一看即懂)

    Python 还支持断言语法.在一套程序完成之前,编程者并不知道程序可能会在哪里报错,或是触发何种条件的报错,因此使用断言语法可以有效地做好异常检测,并适时触发和抛出异常. Python 中使用 as ...

  6. CAD中怎么设置CAD标注样式?CAD看图软件教程

    在进行CAD制图的过程中,有些时候会需要对CAD图纸中的图形进行标注,针对一样的图形可以选择多种不同的CAD标注样式.接下来的CAD教程就让小编来给大家介绍一下浩辰CAD看图王电脑版中CAD标注样式的 ...

  7. python图片识别论文_Python识别文字,实现看图说话 | CSDN博文精选

    原标题:Python识别文字,实现看图说话 | CSDN博文精选 作者 | 张小腿 来源 | CSDN博客 现在写文件很多网站都不让复制了,所以每次都是截图然后发到QQ上然后用手机QQ的文字识别再发回 ...

  8. 四十八、Python中的GUI布局tkinter

    @Author:Runsen 现在极少有人会用上tkinter了,所以真正研究的人也就更少了,本来不想更新tkinter.看到很多人在学tkinter,其实用Python做布局,没有人这么干.但还是更 ...

  9. pythonguitkinter组件_四十八、Python中的GUI布局tkinter

    「@Author:Runsen」 现在极少有人会用上tkinter了,所以真正研究的人也就更少了,本来不想更新tkinter.看到很多人在学tkinter,其实用Python做布局,没有人这么干.但还 ...

最新文章

  1. c++栈和java栈的区别
  2. Tomcat部署的三种方式
  3. Linux下的 FTP
  4. php system 255,GitHub - dwg255/OA-SYS: OA办公系统开源项目
  5. Git客户端TortoiseGit下载、安装及汉化
  6. matplotlib 设置标注方向_Matplotlib绘制带主题及聚类类标的散点图
  7. 解决pip2安装不成功的问题
  8. 测试你的样子长得美与丑「超准的测试」
  9. 开发环境eclipse for Mac 下的常用快捷键汇总(基本参照Win系,将Ctrl换为Command)
  10. 解决font-weight:600在安卓机不生效的方法
  11. Oracle Goldengate 安装配置
  12. LBP及纹理表达 转自http://blog.sina.com.cn/s/blog_ba9d7d9901018k4v.html
  13. Java冒泡排序代码实现
  14. CodeSniffer使用教程
  15. 通过wal文件查看lsn和txid,lsn和txid对应关系
  16. xmind设计测试用例以及与云效平台的交互
  17. Fiddler下载安装及手机抓包--小白版
  18. 涉及数字的英语表示——几点钟、年月日、世纪、年代、年龄
  19. 弘辽科技:拼多多活动布局三大招!
  20. 设计师们书签里的设计素材精品网站

热门文章

  1. 学习汇编前你应该知道的知识
  2. 为什么我还在用Windows?
  3. Vue3 初探 ref、reactive 、及改变数组的值
  4. c#中out ref的简单使用说明
  5. vasp测试计算机,vasp-test测试例子
  6. spring integration 入门
  7. 射影几何----第四调和点的作图法及证明
  8. date.now()
  9. 安装oculus运行时出现问题_通风管道安装时应该注意的问题
  10. WPF Aero Glass Window