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写的一个wordpress的采集程序
Feb 27 Python
python中reduce()函数的使用方法示例
Sep 29 Python
Python列表删除的三种方法代码分享
Oct 31 Python
Python对ElasticSearch获取数据及操作
Apr 24 Python
如何在Django项目中引入静态文件
Jul 26 Python
浅析PEP570新语法: 只接受位置参数
Oct 15 Python
代码总结Python2 和 Python3 字符串的区别
Jan 28 Python
python文件及目录操作代码汇总
Jul 08 Python
Python‘==‘ 及 ‘is‘相关原理解析
Sep 05 Python
详解Python爬虫爬取博客园问题列表所有的问题
Jan 18 Python
Python实现为PDF去除水印的示例代码
Apr 03 Python
Django数据库(SQlite)基本入门使用教程
Jul 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
php 向访客和爬虫显示不同的内容
2009/11/09 PHP
php自动识别文件编码并转换为UTF-8的方法
2014/06/12 PHP
Js之软键盘实现(js源码)
2007/01/30 Javascript
JavaScript DOM 添加事件
2009/02/14 Javascript
jQuery源码分析-02正则表达式 RegExp 常用正则表达式
2011/11/14 Javascript
分析Node.js connect ECONNREFUSED错误
2013/04/09 Javascript
js用Date对象的setDate()函数对日期进行加减操作
2014/09/18 Javascript
node.js中的fs.chmod方法使用说明
2014/12/18 Javascript
js生成随机数方法和实例
2017/01/17 Javascript
JavaScript函数节流和函数防抖之间的区别
2017/02/15 Javascript
JS动画定时器知识总结
2018/03/23 Javascript
Angular5集成eventbus的示例代码
2018/07/19 Javascript
使用Vue实现简单计算器
2020/02/25 Javascript
vue实现把接口单独存放在一个文件方式
2020/08/13 Javascript
利用python获得时间的实例说明
2013/03/25 Python
Python 迭代器工具包【推荐】
2016/05/06 Python
Python实现Mysql数据库连接池实例详解
2017/04/11 Python
简单了解Django模板的使用
2017/12/20 Python
基于Django用户认证系统详解
2018/02/21 Python
python实现最长公共子序列
2018/05/22 Python
为什么Python中没有"a++"这种写法
2018/11/27 Python
解决pycharm启动后总是不停的updating indices...indexing的问题
2019/11/27 Python
python3 pathlib库Path类方法总结
2019/12/26 Python
基于Tensorflow一维卷积用法详解
2020/05/22 Python
配置H5的滚动条样式的示例代码
2018/03/09 HTML / CSS
泰国第一的化妆品网站:Konvy
2018/02/25 全球购物
小米俄罗斯授权商店:Xiaomi俄罗斯
2019/12/08 全球购物
全球采购的街头服饰和帽子:Urban Excess
2020/10/28 全球购物
加拿大品牌鞋包连锁店:Little Burgundy
2021/02/28 全球购物
商业房地产广告语
2014/03/13 职场文书
保护野生动物倡议书
2014/05/16 职场文书
产品陈列协议书(标准版)
2014/09/17 职场文书
财政局党的群众路线教育实践活动剖析材料
2014/10/13 职场文书
小学体育课教学反思
2016/02/16 职场文书
python scipy 稀疏矩阵的使用说明
2021/05/26 Python
解决flex布局中子项目尺寸不受flex-shrink限制
2022/05/11 HTML / CSS