python 实现在tkinter中动态显示label图片的方法


Posted in Python onJune 13, 2019

在编程中我们往往会希望能够实现这样的操作:点击Button,选择了图片,然后在窗口中的Label处显示选到的图片。那么这时候就需要如下代码:

from tkinter import *
from tkinter.filedialog import askopenfilename
 
def choosepic():
  path_=askopenfilename()
  path.set(path_)
  img_gif=Tkinter.PhotoImage(file='xxx.gif')
  l1.config(image=img_gif)
  
root=Tk()
path=StringVar()
Button(root,text='选择图片',command=choosepic).pack()
e1=Entry(root,state='readonly',text=path)
e1.pack()
l1=Label(root)
l1.pack()
root.mainloop

而由于tkinter只能识别gif格式的图片,如果我们要添加jpg或者png格式的图片的话就要借用PIL进行处理。这时候代码如下:

from tkinter import *
from tkinter.filedialog import askopenfilename
from PIL import Image,ImageTk
 
def choosepic():
  path_=askopenfilename()
  path.set(path_)
  img_open = Image.open(e1.get())
  img=ImageTk.PhotoImage(img_open)
  l1.config(image=img)

但这个时候会发现Label并没有如我们所期望的那样变化。

这时候我去网上查找了相关资料,在 https://stackoverflow.com/questions/14291434/how-to-update-image-in-tkinter-label 下看到了回答者给出的解决办法:

photo = ImageTk.PhotoImage(self.img)
self.label1.configure(image = photo)
self.label1.image = photo # keep a reference!

于是在他的启发下我将代码进行了修改,之后完美解决了问题。修改后函数部分的代码如下:

def choosepic():
  path_=askopenfilename()
  path.set(path_)
  img_open = Image.open(e1.get())
  img=ImageTk.PhotoImage(img_open)
  l1.config(image=img)
  l1.image=img #keep a reference

而由于本人才疏学浅,对于造成这种现象的原因尚不理解。不过那名外国回答者也给出了这样修改的原因,在 http://effbot.org/pyfaq/why-do-my-tkinter-images-not-appear.htm 上对于为何要keep a reference做出了详尽的解释。

原文如下:

python 实现在tkinter中动态显示label图片的方法

以上这篇python 实现在tkinter中动态显示label图片的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python获取外网ip地址的方法总结
Jul 02 Python
Python的Django框架下管理站点的基本方法
Jul 17 Python
Python中的字典与成员运算符初步探究
Oct 13 Python
Python制作Windows系统服务
Mar 25 Python
python实现简单遗传算法
Mar 19 Python
python3.6数独问题的解决
Jan 21 Python
PyQt5实现暗黑风格的计时器
Jul 29 Python
基于python实现从尾到头打印链表
Nov 02 Python
Python无头爬虫下载文件的实现
Apr 02 Python
Django实现后台上传并显示图片功能
May 29 Python
python字符串的多行输出的实例详解
Jun 08 Python
python3实现常见的排序算法(示例代码)
Jul 04 Python
windows10下安装TensorFlow Object Detection API的步骤
Jun 13 #Python
24式加速你的Python(小结)
Jun 13 #Python
Python button选取本地图片并显示的实例
Jun 13 #Python
对Python强大的可变参数传递机制详解
Jun 13 #Python
python 通过可变参数计算n个数的乘积方法
Jun 13 #Python
python 多线程对post请求服务器测试并发的方法
Jun 13 #Python
Python任意字符串转16, 32, 64进制的方法
Jun 12 #Python
You might like
PHP:风雨欲来 路在何方?
2006/10/09 PHP
超级好用的一个php上传图片类(随机名,缩略图,加水印)
2010/06/30 PHP
PHP框架Swoole定时器Timer特性分析
2014/08/19 PHP
浅析Laravel5中队列的配置及使用
2016/08/04 PHP
js获取单选框或复选框值及操作
2012/12/18 Javascript
jQuery实现友好的轮播图片特效
2015/01/12 Javascript
微信支付如何实现内置浏览器的H5页面支付
2015/09/25 Javascript
Angular.js 实现数字转换汉字实例代码
2016/07/14 Javascript
AngularJS基础 ng-src 指令简单示例
2016/08/03 Javascript
基于jQuery实现歌词滚动版音乐播放器的代码
2016/09/17 Javascript
JavaScript实现二分查找实例代码
2017/02/22 Javascript
利用types增强vscode中js代码提示功能详解
2017/07/07 Javascript
Vue如何从1.0迁移到2.0
2017/10/19 Javascript
jQuery length 和 size()区别总结
2018/04/26 jQuery
Javascript实现购物车功能的详细代码
2018/05/08 Javascript
vue2.0 中使用transition实现动画效果使用心得
2018/08/13 Javascript
angular1.x ui-route传参的三种写法小结
2018/08/31 Javascript
分享5个小技巧让你写出更好的 JavaScript 条件语句
2018/10/20 Javascript
利用angular自动编译andriod APK的绕坑经历分享
2019/03/08 Javascript
jQuery事件blur()方法的使用实例讲解
2019/03/30 jQuery
微信小程序使用车牌号输入法的示例代码
2019/08/20 Javascript
微信小程序列表时间戳转换实现过程解析
2019/10/12 Javascript
详解JavaScript 事件流
2020/09/02 Javascript
通过实例解析javascript Date对象属性及方法
2020/11/04 Javascript
使用Python的web.py框架实现类似Django的ORM查询的教程
2015/05/02 Python
对Python3 序列解包详解
2019/02/16 Python
Python 函数返回值的示例代码
2019/03/11 Python
10行Python代码实现Web自动化管控的示例代码
2020/08/14 Python
python连接手机自动搜集蚂蚁森林能量的实现代码
2021/02/24 Python
Java多态性的定义以及类型
2014/09/16 面试题
高中地理教学反思
2014/01/29 职场文书
社区护士演讲稿
2014/08/27 职场文书
争先创优演讲稿
2014/09/15 职场文书
2014年人事专员工作总结
2014/11/19 职场文书
魂断蓝桥观后感
2015/06/10 职场文书
2016年教师政治思想表现评语
2015/12/02 职场文书