在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

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值