Python3用tkinter和PIL实现看图工具

 更新时间:2018年06月21日 15:33:14   作者:六个九十度  
这篇文章给大家分享了Python3用tkinter和PIL实现看图工具的详细实例代码,有兴趣的朋友参考学习下。

需求

想做看图工具的,必然要支持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中的路径拼接问题

    python中的路径拼接问题

    这篇文章主要介绍了python中的路径拼接问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-03-03
  • Django返回HTML文件的实现方法

    Django返回HTML文件的实现方法

    这篇文章主要介绍了Django返回HTML文件的实现方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-09-09
  • Python Pandas 转换unix时间戳方式

    Python Pandas 转换unix时间戳方式

    今天小编就为大家分享一篇Python Pandas 转换unix时间戳方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-12-12
  • Python实例方法、类方法、静态方法的区别与作用详解

    Python实例方法、类方法、静态方法的区别与作用详解

    这篇文章主要介绍了Python实例方法、类方法、静态方法的区别与作用,结合实例形式分析了Python面向对象程序设计中实例方法、类方法、静态方法的概念、原理、用法及相关操作技巧,需要的朋友可以参考下
    2019-03-03
  • Pandas实现Dataframe的重排和旋转

    Pandas实现Dataframe的重排和旋转

    使用Pandas的pivot方法可以将DF进行旋转变换,本文将会详细讲解pivot的秘密,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-06-06
  • python验证码识别的示例代码

    python验证码识别的示例代码

    本篇文章主要介绍了python验证码识别的示例代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-09-09
  • Python+OpenCV手势检测与识别Mediapipe基础篇

    Python+OpenCV手势检测与识别Mediapipe基础篇

    网上搜到了一些关于手势处理的实验,我在这儿简单的实现一下,下面这篇文章主要给大家介绍了关于Python+OpenCV手势检测与识别Mediapipe基础篇的相关资料,需要的朋友可以参考下
    2022-12-12
  • Python调用Java可执行jar包问题

    Python调用Java可执行jar包问题

    这篇文章主要介绍了Python调用Java可执行jar包问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-12-12
  • Pytorch+PyG实现GraphSAGE过程示例详解

    Pytorch+PyG实现GraphSAGE过程示例详解

    这篇文章主要为大家介绍了Pytorch+PyG实现GraphSAGE过程示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-04-04
  • Python读取预处理DICOM文件方式详解

    Python读取预处理DICOM文件方式详解

    这篇文章主要介绍了Python读取预处理DICOM文件方式,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-03-03

最新评论