用tkinter实现简单的图片浏览器

用tkinter实现简单的图片浏览器我们需要做一个图片查看器 那么首先要能显示图片 所以需要一个能将文件夹中的图片 load 到程序中 在程序界面上需要一个能显示图片的控件 这样至少 能显示一张图片了 要实现查看功能 那就得可以左右切换图片 因此需要俩按扭来控制 再加一行能显示当前图片和总图片张数 就更完美了

大家好,我是讯享网,很高兴认识大家。
我们需要做一个图片查看器,那么首先要能显示图片,所以需要一个能将文件夹中的图片load到程序中, 在程序界面上需要一个能显示图片的控件,这样至少 能显示一张图片了。要实现查看功能,那就得可以左右切换图片, 因此需要俩按扭来控制。再加一行能显示当前图片和总图片张数,就更完美了。 以上分析做完了,那我们就开始码代码吧 

讯享网

 

讯享网import tkinter as tk #此处需要引入glob库,此库的作用见下面注释 import glob #此处需要引入Image库,imageTk类 from PIL import Image,ImageTk ''' 我们需要做一个图片查看器,那么首先要能显示图片,所以需要一个能将文件夹中的图片load到程序中, 在程序界面上需要一个能显示图片的控件,这样至少 能显示一张图片了。要实现查看功能,那就得可以左右切换图片, 因此需要俩按扭来控制。再加一行能显示当前图片和总图片张数,就更完美了。 以上分析做完了,那我们就开始码代码吧 ''' #先画一个能显示所有内容的载体,即使用Tk的属性可以画一个面板 #这里用到了geometry,通过查资料,geometry('wxh +x +y') w为宽度,h为高度,中间那个是小写的x,大写的X或者*均不可以。 #+x表示距离屏幕左边的距离,-x表示距离屏幕右边的距离, #+y表示距离屏幕上边的距离,-y表示距离屏幕下边的距离, root = tk.Tk() root.geometry('1080x960+100+100') root.title('图片查看器') ''' glob()函数,是种文件通配符,非常常用。glob模块提供了函数用于从目录通配符搜索中生成文件列表: Python glob()函数用法 glob()函数可以查找符合自己要求的文件, 支持通配符操作*,,?,[]这四个通配符, ''' photos = glob.glob('photo/*.jpg') print(photos) #打开图片Image.open函数 ''' 由于PhotoImage不支持jpg格式的问题,因此,这里需要用到Image + ImageTk 来实现 将上述photos图片列表中的图片进行遍历,然后通过Image.open函数打开每一张图片 再通过ImageTk.PhotoImage来加载图片对像,赋值给photoss ''' photoss = [ImageTk.PhotoImage(Image.open(photo)) for photo in photos] print(photoss) current_photo_no = 0 #此处用来将photoss的序号为0的图片显示在界面的lable上,并设置图片显示的宽度和高度 photo_lable = tk.Label(root,image = photoss[current_photo_no],width = 1080,height = 800) photo_lable.pack() number_var = tk.StringVar() #number_var.set('1 of 4') #此处用来显示当前图片序号和总图片数量 number_var.set(f'{current_photo_no + 1} of {len(photos)}') tk.Label(root,textvariable = number_var,bd = 1,relief = tk.SUNKEN,anchor = tk.CENTER).pack(fill = tk.X) #在界面上显示两个按扭,用来操作图片的切换 button_frame = tk.Frame(root) button_frame.pack() prev_photo = tk.Button(button_frame,text='上一页') next_photo = tk.Button(button_frame,text='下一页') prev_photo.pack(side = tk.LEFT,anchor = tk.CENTER) next_photo.pack(side = tk.RIGHT,anchor = tk.CENTER) ''' 定义一个函数,用来实现点击按扭切换图片 切换图片实际上是给photoss赋值不同的地址 ''' def change_photos(next_no): global current_photo_no current_photo_no += next_no if current_photo_no >= len(photos): current_photo_no = 0 if current_photo_no < 0: current_photo_no = len(photos) - 1 number_var.set(f'{current_photo_no + 1} of {len(photos)}') photo_lable.configure(image = photoss[current_photo_no]) #此处为两个按扭绑定相应的操作函数 prev_photo.config(command = lambda: change_photos(-1)) next_photo.config(command = lambda: change_photos(1)) root.mainloop() 

代码编译成.exe文件和源码,我已上传至个人资源,有需要可以下载。


讯享网

注意:在exe运行时,需要将图片资源和.exe文件放在同一目录下。

 

小讯
上一篇 2025-03-28 19:41
下一篇 2025-01-05 14:14

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/41702.html