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 list转dict示例分享
Jan 28 Python
Python基类函数的重载与调用实例分析
Jan 12 Python
在Python的while循环中使用else以及循环嵌套的用法
Oct 14 Python
Python批量创建迅雷任务及创建多个文件
Feb 13 Python
Python黑帽编程 3.4 跨越VLAN详解
Sep 28 Python
Ubuntu安装Jupyter Notebook教程
Oct 18 Python
python保存文件方法小结
Jul 27 Python
学生信息管理系统python版
Oct 17 Python
python 把列表转化为字符串的方法
Oct 23 Python
Python 中使用 PyMySQL模块操作数据库的方法
Nov 10 Python
使用Python爬取Json数据的示例代码
Dec 07 Python
Python爬虫实战之爬取京东商品数据并实实现数据可视化
Jun 07 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
2019年漫画销量排行榜:鬼灭登顶 海贼单卷制霸 尾田盛赞鬼灭
2020/03/08 日漫
Php中使用Select 查询语句的实例
2014/02/19 PHP
thinkPHP实现MemCache分布式缓存功能
2016/03/23 PHP
分享PHP-pcntl 实现多进程代码
2016/09/30 PHP
tp5框架前台无限极导航菜单类实现方法分析
2020/03/29 PHP
JS远程获取网页源代码实例
2013/09/05 Javascript
JQ获取动态加载的图片大小的正确方法分享
2013/11/08 Javascript
调用DOM对象的focus使文本框获得焦点
2014/02/19 Javascript
javascript + jquery实现定时修改文章标题
2014/03/19 Javascript
javascript获取元素偏移量的方法有哪些
2014/06/24 Javascript
基于jQuery实现网页进度显示插件
2015/03/04 Javascript
JavaScript对象数组的排序处理方法
2015/10/21 Javascript
浅谈JavaScript中的对象及Promise对象的实现
2015/11/15 Javascript
详解js中构造流程图的核心技术JsPlumb
2015/12/08 Javascript
微信小程序 教程之wxapp视图容器 swiper
2016/10/19 Javascript
微信小程序 video组件详解
2016/10/25 Javascript
基于vue 动态加载图片src的解决方法
2018/02/05 Javascript
聊聊JS动画库 Velocity.js的使用
2018/03/13 Javascript
JS构造一个html文本内容成文件流形式发送到后台
2018/07/31 Javascript
JS中类的静态方法,静态变量,实例方法,实例变量区别与用法实例分析
2020/03/14 Javascript
python友情链接检查方法
2015/07/08 Python
Python实现批量将word转html并将html内容发布至网站的方法
2015/07/14 Python
python中闭包Closure函数作为返回值的方法示例
2017/12/17 Python
Python数据分析之双色球统计两个红和蓝球哪组合比例高的方法
2018/02/03 Python
使用python画个小猪佩奇的示例代码
2018/06/06 Python
Python学习笔记之变量、自定义函数用法示例
2019/05/28 Python
Python 一行代码能实现丧心病狂的功能
2020/01/18 Python
Python求解排列中的逆序数个数实例
2020/05/03 Python
Python实现图片查找轮廓、多边形拟合、最小外接矩形代码
2020/07/14 Python
css3实现文字扫光渐变动画效果的示例
2017/11/07 HTML / CSS
哥德堡通行证:Gothenburg Pass
2019/12/09 全球购物
学生自我鉴定范文
2013/10/04 职场文书
优乐美广告词
2014/03/14 职场文书
心理健康教育主题班会
2015/08/13 职场文书
《跨越海峡的生命桥》教学反思
2016/02/18 职场文书
js 实现验证码输入框示例详解
2022/09/23 Javascript