精华内容
下载资源
问答
  • Python之解决tkinter.PhotoImage不显示图片的问题 Python3 最近做一个以图搜图的项目时,老师让做一个GUI的界面,因为之前学过tkinter所以信心满满的去做,结果搞了一下午,布局都没建好,瞬间崩溃。 项目的主要需求...

    Python之解决tkinter.PhotoImage不显示图片的问题 Python3

    最近做一个以图搜图的项目时,老师让做一个GUI的界面,因为之前学过tkinter所以信心满满的去做,结果搞了一下午,布局都没建好,瞬间崩溃。

    项目的主要需求是:需要添加一个按钮,实现选择图片,并把图片和图片名显示到页面上,同时把相似度最高的图显示出来。

    以下是一个点击按钮选择图片,并显示图片名和图片的一个demo

    from tkinter import *
    import tkinter.filedialog
    from PIL import Image, ImageTk
    
    
    # 只能使用GIF格式
    # def choosepic():
    #    path_=tkinter.filedialog.askopenfilename()
    #    #获取图片路径
    #    path.set(path_)
    #    #print(path_)
    #    img_gif=tkinter.PhotoImage(file=path_)
    #    l1.config(image=img_gif)
    #    l1.image=img_gif#keep a reference
    
    # 可使用其他格式图片,但需要PIL库
    def choosepic():
        path_ = tkinter.filedialog.askopenfilename()
        # 获取图片路径
        path.set(path_)
        # print(path_)
        img_open = Image.open(entry.get())
        img = ImageTk.PhotoImage(img_open.resize((200,200)))#把图片缩放以下,不然太大了,放不下
        l1.config(image=img)
        l1.image = img  # keep a reference
    
    root = tkinter.Tk()#k是小写
    root.title("图片显示")
    #设置大小和位置
    root.geometry("800x400+200+200")
    # root = Tk()
    path = StringVar()
    button1 = Button(root, text='选择图片', command=choosepic)
    button1.pack()
    entry = Entry(root, state='readonly', text=path,width = 100)
    entry.pack()
    l1 = Label(root)
    l1.pack()
    root.mainloop()
    

    以下是一个并列显示多张图片的demo

    from tkinter import Tk, Label
    from PIL import Image, ImageTk
    
    root = Tk()
    # 总共4张图片
    img_list = ["001-0.jpg", "001-1.jpg", "002-0.jpg", "002-1.jpg"]
    def load_img(index, item):
        # 打开图片。
        # resize():示例图片太大,这里缩小一些。
        img = Image.open(item).resize((200, 200))
        # 引用:添加一个Label,用来存储图片。使用PanedWindow也行。
        panel = Label(master=root)
        panel.photo = ImageTk.PhotoImage(img)  # 将原本的变量photo改为panel.photo
    
        # 图片用Label来显示,参数master改不改为panel都行,这里就不改了。
        # 注意:参数image改为panel.photo
        Label(master=root, image=panel.photo).grid(row=0, column=index)
    
    
    # 使用for循环添加图片,enumerate:获取元素与其索引值
    for index, item in enumerate(img_list):
        load_img(index, item)  # 执行函数
    
    root.mainloop()
    

    以下是项目中改动的部分代码

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-C5vsrPcW-1634806535151)(C:\Users\12235\AppData\Roaming\Typora\typora-user-images\image-20211021165144462.png)]

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jDztZkZC-1634806535152)(C:\Users\12235\AppData\Roaming\Typora\typora-user-images\image-20211021165218397.png)]

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-az6D909Y-1634806535153)(C:\Users\12235\AppData\Roaming\Typora\typora-user-images\image-20211021165300493.png)]

    以上参考了这两篇文章,个人感觉很有用,补足了之前的不足之处。

    https://blog.csdn.net/fjdmy001/article/details/78498150

    https://blog.csdn.net/m0_50000839/article/details/120078530

    01/article/details/78498150

    https://blog.csdn.net/m0_50000839/article/details/120078530

    展开全文
  • 今天小编就为大家分享一篇python tkinter canvas 显示图片的示例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • 编程我们往往会希望能够实现这样的操作:点击Button,选择了图片,然后窗口的Label处显示选到的图片。那么这时候就需要如下代码: from tkinter import * from tkinter.filedialog import askopenfilename ...
  • 主要介绍了python使用Tkinter显示网络图片的方法,涉及Python操作图片的相关技巧,需要的朋友可以参考下
  • tkinter显示图片

    千次阅读 2021-02-06 11:23:23
    tkinter显示图片 直接显示 import tkinter root = tkinter.Tk() img_gif = tkinter.PhotoImage(file = '1dpmw.gif') label_img = tkinter.Label(root, image = img_gif) label_img.pack() root.mainloop() 但是上面...

    tkinter显示图片

    直接显示

    import tkinter
    root = tkinter.Tk()
    img_gif = tkinter.PhotoImage(file = '1dpmw.gif')
    label_img = tkinter.Label(root, image = img_gif)
    label_img.pack()
    root.mainloop()
    

    但是上面的有一个问题,就是对于png这类图片显示不成功,会发现是空白,所以不推荐使用,因为只支持.gif一种形式。

    用PIL加载显示

    import tkinter
    from PIL import Image, ImageTk
    root = tkinter.Tk()
    img_open = Image.open("2021-02-06_105510.png")
    img_png = ImageTk.PhotoImage(img_open)
    label_img = tkinter.Label(root, image = img_png)
    label_img.pack()
    root.mainloop()
    

    注意和上面的区别,其实就是图片加载的方式由原来的img_gif = tkinter.PhotoImage(file = '1dpmw.gif') 变为现在的:

    img_open = Image.open("2021-02-06_105510.png")
    img_png = ImageTk.PhotoImage(img_open)

    因为Image里面可以帮你解码,所以可以直接显示png。

    上面显示是通过把图片放在label上面实现的,你也可以放到button或者canvas上面都是可以的。

    图片显示空白

    但你可能发现你在使用的时候,你的显示是空白,这里是因为你在开发的时候上面的一段话会写在一个函数里面封装起来,这个时候导致img_open是局部的,所以函数运行结束就被回收了,所以显示的是空白,解决方案也很简单,将这个变量声明为全局即可。

    import tkinter
    from PIL import Image, ImageTk
    root = tkinter.Tk()
    img_png =None
    def func():
    	img_open = Image.open("2021-02-06_105510.png")
    	global img_png
    	img_png = ImageTk.PhotoImage(img_open)
    	label_img = tkinter.Label(root, image = img_png)
    	label_img.pack()
    func()
    root.mainloop()
    
    展开全文
  • 本文前面文章基础上介绍tkinter添加图片和文本,这之前,我们需要安装一个图片库,叫Pillow,这个需要下载exe文件,根据下面图片下载和安装。 下载完后直接双击安装exe,默认点击下一步,直到安装完成,会自动...
  • 编程我们往往会希望能够实现这样的操作:点击Button,选择了图片,然后窗口的Label处显示选到的图片。那么这时候就需要如下代码:from tkinter import *from tkinter.filedialog import askopenfilenamedef ...

    在编程中我们往往会希望能够实现这样的操作:点击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并没有如我们所期望的那样变化。

    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做出了详尽的解释。似乎是由于tkinter的接口不能合理的掌控图像的来源导致的,由于本人才疏学浅,对于这个问题尚没有较深的理解。

    原文如下:

    image

    展开全文
  • python tkinter 无法显示图片

    千次阅读 2020-12-02 14:57:37
    fromTkinterimport*root=Tk()canvas=Canvas(root)#lab=Label(root,bg='red')icon=r'C:\Users\zhx\Pictures\11.jpg'gif1=PhotoImage(icon)canvas.create_image(0,0,image=gif1)#lab.co...from Tkinter import *root =...

    fromTkinterimport*root=Tk()canvas=Canvas(root)#lab=Label(root,bg='red')icon=r'C:\Users\zhx\Pictures\11.jpg'gif1=PhotoImage(icon)canvas.create_image(0,0,image=gif1)#lab.co...

    from Tkinter import *

    root = Tk()

    canvas = Canvas(root)

    #lab = Label(root,bg='red')

    icon =r'C:\Users\zhx\Pictures\11.jpg'

    gif1 = PhotoImage(icon)

    canvas.create_image(0, 0, image = gif1)

    #lab.config(image = icon)

    canvas.pack()

    #lab.pack()

    root.mainloop()

    用canvas和label都试了一下总是报错

    >>>

    Traceback (most recent call last):

    File "", line 254, in run_nodebug

    File "E:\python\w\test1.py", line 17, in

    canvas.create_image(0, 0, image = gif1)

    File "D:\python27\Lib\lib-tk\Tkinter.py", line 2260, in create_image

    return self._create('image', args, kw)

    File "D:\python27\Lib\lib-tk\Tkinter.py", line 2251, in _create

    *(args + self._options(cnf, kw))))

    _tkinter.TclError: image "C:\Users\zhx\Pictures\11.jpg" doesn't exist

    可是这个文件是一定存在的,我确认了多次,,,网上部分资料说是python把生成的图像当垃圾回收了,可总得有办法显示把,要不这个属性还有啥用,望大神指点

    展开

    展开全文
  • from tkinter import * import time #更新进度条函数 def change_schedule(now_schedule,all_schedule): canvas.coords(fill_rec, (5, 5, 6 + (now_schedule/all_schedule)*100, 25)) root.update() x.set(str...
  • 我试图创建一个有主菜单和设置菜单的应用程序。我想为每一个设置背景。但我从设置菜单开始。...from tkinter import *from tkinter.ttk import *install_directory = '...'# ****************...
  • 如何在Tkinter中添加图片

    千次阅读 2020-12-04 05:58:07
    根据文件path指向的格式,您的实际代码可能会返回错误。也就是说,PhotoImage类已经支持一些图像格式,例如.gif,.pgm(和.png,如果tk.... 8.6: try: # In order to be able to import tkinter forimport tk...
  • 有时候小编觉得python的功能真的是无限强大,居然可以插入图片,今天小编就这个内容,给大家讲解下关于插入图片内容,想必很多小伙伴都很感兴趣吧~那就一起来看下吧~关于TkinterTkinter 模块(Tk 接口)是 Python 的...
  • 本文参考:Why do my Tkinter images notappear? (archive.org) 尽管上面引用的文章已经老到被归档...否则,图片会无法显示。可以像下面这样这样将组件的属性引用到图片上,其中label.image = photo是关键: # -*.
  • ''' tk_image_view_url_io.pydisplay an image from a URL using Tkinter, PIL and data_streamtested with Python27 and Python33 by vegaseat 01mar2013'''import io# allows for image formats other than gif...
  • 使用tkinter时,为窗口添加背景图片,但是通过函数实现时,图片显示无效。 问题分析 当你向Tkinter小部件添加PhotoImage或其他图像对象时,必须保留对该图像对象的引用。如果你不这样做,图像就不会一直出现。 ...
  • 今天小编就为大家分享一篇python 实现在tkinter中动态显示label图片的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧 编程我们往往会希望能够实现这样的操作:点击Button,选择了图片,...
  • tkinter canvas 显示opencv图片尺寸自适应 from PIL import ImageTk, Image import cv2 import tkinter as tk import os def show_image_auto_resize(canvas, cv_image): # 获取canvas和图片的尺寸 canvas_width ...
  • from tkinter import * class Application(Frame): def init(self, master=None): super().init(master) self.master = master ...root.mainloop() 代码运行没问题,图片好像也插入进去了,就是显示不出来是为什么呢
  • 我的例子,我创建了一个类,其中显示了一个框架和一个按钮。该按钮调用一个函数来随机化图像(或者您的情况下更改为下一个图像),并调用该函数以用新图像更新帧。希望它能给你一个好的开始。干杯!注:对于...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 6,202
精华内容 2,480
关键字:

在tkinter中显示图片