Python使用tkinter编写图片浏览程序

代码要点:1)使用tkinter的Label显示图片;2)tkinter的PhotoImage支持的图片格式较少,使用pillow扩展库的Image和ImageTk弥补了这个缺点。

import os

import tkinter

import tkinter.messagebox

from PIL import Image, ImageTk

# 创建tkinter应用程序窗口

root = tkinter.Tk()

# 设置窗口大小和位置

root.geometry('430x650+40+30')

# 不允许改变窗口大小

root.resizable(False, False)

# 设置窗口标题

root.title('使用Label显示图片')

# 获取当前文件夹中所有图片文件列表

suffix = ('.jpg', '.bmp', '.png')

pics = [p for p in os.listdir('.') if p.endswith(suffix)]

current = -1

def changePic(flag):

    '''flag=-1表示上一个,flag=1表示下一个'''

    global current

    new = current + flag

    if new<0:

        tkinter.messagebox.showerror('', '这已经是第一张图片了')

    elif new>=len(pics):

        tkinter.messagebox.showerror('', '这已经是最后一张图片了')

    else:

        # 获取要切换的图片文件名

        pic = pics[new]

        # 创建Image对象并进行缩放

        im = Image.open(pic)

        w, h = im.size

        # 这里假设用来显示图片的Label组件尺寸为400*600

        if w>400:

            h = int(h*400/w)

            w = 400

        if h>600:

            w = int(w*600/h)

            h = 600

        im = im.resize((w,h))

        # 创建PhotoImage对象,并设置Label组件图片

        im1 = ImageTk.PhotoImage(im)

        lbPic['image'] = im1

        lbPic.image = im1

        current = new

# “上一张”按钮

def btnPreClick():

    changePic(-1)

btnPre = tkinter.Button(root, text='上一张', command=btnPreClick)

btnPre.place(x=100, y=20, width=80, height=30)

# “下一张”按钮

def btnNextClick():

    changePic(1)

btnNext = tkinter.Button(root, text='下一张', command=btnNextClick)

btnNext.place(x=230, y=20, width=80, height=30)

# 用来显示图片的Label组件

lbPic = tkinter.Label(root, text='test', width=400, height=600)

changePic(1)

lbPic.place(x=10, y=50, width=400, height=600)

# 启动消息主循环

root.mainloop()

运行截图:

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

dongfuguo

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值