在编程中我们往往会希望能够实现这样的操作:点击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图片的方法

本文地址: http://www.cppcns.com/jiaoben/python/262128.html

python label显示图片_python 实现在tkinter中动态显示label图片的方法相关推荐

  1. python编辑ppt图片_Python实现对PPT文件进行截图操作的方法

    本文实例讲述了Python实现对PPT文件进行截图操作的方法.分享给大家供大家参考.具体分析如下: 下面的代码可以为powerpoint文件ppt进行截图,可以指定要截取的幻灯片页面,需要本机安装了p ...

  2. python 查找指定文件_python实现在目录中查找指定文件的方法

    本文实例讲述了python实现在目录中查找指定文件的方法.分享给大家供大家参考.具体实现方法如下: 1. 模糊查找 代码如下: import os from glob import glob #用到了 ...

  3. python怎么显示分数_Python 输入一个数字判断成绩分数等级的方法

    Python 输入一个数字判断成绩分数等级的方法 成绩分数等级为: 100-90 A 90-80 B 80-70 C 70-60 D 60以下 F 实现判断分数等级是一个很简单的数学问题,只要你输入的 ...

  4. Android --- 夜神模拟器中没有图片怎么办?夜神模拟器中怎么导入图片?

    问题: 夜神模拟器中没有图片怎么办?夜神模拟器中怎么导入图片? 解决: 1.点击右侧文件助手 2.点击"打开电脑文件夹" 3.弹出如下文件夹 4.点击imageShare 5.点击 ...

  5. 【Latex】【插入图片】如何在latex中插入并列图片

    [Latex][插入图片]如何在latex中插入并列图片 实验分析部分需要将多个图片并列展示,今天看了网友的一些提示,写出了两种并列展示图片的方法: 每个图片都有一个标题 多个图片共用一个标题,每个图 ...

  6. html怎么写入图片位置,如何在css中设置插入图片定位

    在做网页开发时,客户给的素材图片通常都是连在一起的,这样做也是为了缩短响应时间.下面就给大家具体说一下 ,如何通过css属性来定位图片. 如何在css中设置插入图片定位 首先设置固定图片的css属性是 ...

  7. python中mainloop添加背景_Python实例讲解 - tkinter canvas (设置背景图片及文字)

    Python实例讲解 -- tkinter canvas (设置背景图片及文字) 先来一个绘图: from Tkinter import * master = Tk() w = Canvas(mast ...

  8. python设置背景图片大全_Python实例讲解 - tkinter canvas (设置背景图片及文字)

    Python实例讲解 -- tkinter canvas (设置背景图片及文字) 先来一个绘图: from Tkinter import * master = Tk() w = Canvas(mast ...

  9. python中mainloop添加背景_Python实例讲解 tkinter canvas (设置背景图片及文字)

    Python实例讲解 tkinter canvas (设置背景图片及文字) 2018-09-14 Python实例讲解 -- tkinter canvas (设置背景图片及文字) 博客分类:Pytho ...

最新文章

  1. Hadoop 分布式环境搭建
  2. 动态规划4--最佳加法表达式
  3. 综合技术 --myBatis理解
  4. 元宇宙iwemeta:元宇宙和虚拟网红入围《经济学人》2022年值得关注的技术
  5. java 预览zip_java压缩包上传,解压,预览(利用editor.md和Jstree实现)和下载
  6. pandas中合并数据集
  7. 【人工智能导论】遗传算法求解TSP问题(含源码github)
  8. tomcat启动报错APR问题
  9. stm32关定时器_STM32F103ZET6的基本定时器
  10. 如何提高PHP代码的质量?第二部分 单元测试
  11. C++中内存泄漏的检测方法介绍
  12. 向前、向后、横着走,双足机器人Cassie,靠深度强化学习学会了走路丨论文
  13. Opencv特征点检测
  14. 这10个idea小技巧,让我的开发效率提升了10倍
  15. hashmap java 排序_HashMap的排序
  16. 关于ResourceBundle国际化的一些思考
  17. ThinkPHP3.2.3实现后台登录界面
  18. linux和windows局域网连接网络,linux与windows局域网互访
  19. 蓝桥杯-决赛A组第九届java
  20. 通过IIS安装包安装IIS

热门文章

  1. java集合清空_java 集合删除数据
  2. mysql隔离级别和mvcc_数据库MVCC和隔离级别的关系是什么?
  3. c语言中结构体类型只有,C语言中main()函数不要返回结构体类型(求助)
  4. IDEA创建SpringBoot
  5. MATLAB使用教程(三)——在文件中编程
  6. 数学建模学习笔记(二)——Topsis优劣解距离法
  7. python子图之间的距离_python与图论的桥梁——igraph
  8. if __name__ == __main___一文带你弄懂python中if __name__ == #39;__main__#39;
  9. android pdf阅读器开发_如何在 Windows 10 中将 Firefox 设置为默认 PDF 阅读器
  10. 无法执行二进制文件: 可执行文件格式错误_VB中.frm .frx .vbp .vbw .scc文件都有什么作用,你知道么?...