Python 图片挑选程序,tkinter, 自动分类

import os
import tkinter
import tkinter.messagebox

from PIL import Image, ImageTk


# 创建tkinter应用程序窗口
root = tkinter.Tk()
# 设置窗口的大小和位置
root.geometry('1200x850+40+30')
# 不允许改变窗口的大小
root.resizable(False, False)
# 设置窗口主题
root.title('使用Label显示图片')


# 获取当前文件夹中所有图片文件列表
suffix = ('.jpg', '.bmp', '.png')
pics = [p for p in os.listdir('cutpic') if p.endswith(suffix)]
# pics.sort(key=lambda item: int(item[:item.index('.')]))

# 定义识别正确和错误的图片存放列表
current = 0
correctList = []
errorList = []
deleteList = []


def changePic(flag):
    '''flag参数作为上下图片的调节 -1代表上一张 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('cutpic/{}'.format(pic))
        w, h = im.size

        # 这里假设用来显示图片的Label组件尺寸为 400x600
        if w > 800:
            h = int(h * 800 / w)
            w = 800
        if h > 1200:
            w = int(w * 1200 / h)
            h = 1200

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

        # 创建image对象,并设置Label组件图片
        im1 = ImageTk.PhotoImage(im)
        lbPic['image'] = im1
        lbPic.image = im1

        current = new


def deletePic(idx):	
	pic = pics[idx]
	im = Image.open('cutpic/{}'.format(pic))
	im.save(f'delete/{pic}')


def correctPic(idx):
	pic = pics[idx]
	im = Image.open('cutpic/{}'.format(pic))
	im.save(f'correct/{pic}')


def errorPic(idx):
	pic = pics[idx]
	im = Image.open('cutpic/{}'.format(pic))
	im.save(f'error/{pic}')


def removePic(idx):
	pic = pics[idx]
	file_name = f'cutpic/{pic}'
	if os.path.exists(file_name):
		os.remove(file_name)
		print(f"移除成功: {file_name}")
	else:
		print(f"未找到图片: {file_name}")


# 上一张的按钮
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)


# 删除按钮
def btnDeleteClick():
    global current
    deletePic(current)
    removePic(current)
    changePic(1)

btnNext = tkinter.Button(root, text='删除', command=btnDeleteClick)
btnNext.place(x=360, y=20, width=80, height=30)


# 识别正确按钮
def btnCorrectClick():
	global current
	correctPic(current)
	removePic(current)
	changePic(1)
	
btnNext = tkinter.Button(root, text='识别正确Yes', command=btnCorrectClick)
btnNext.place(x=490, y=20, width=80, height=30)


# 识别错误按钮
def btnErrorClick():
	global current
	errorPic(current)
	removePic(current)
	changePic(1)
	
btnNext = tkinter.Button(root, text='识别错误NO', command=btnErrorClick)
btnNext.place(x=620, y=20, width=80, height=30)


# 用来显示图片的Label组件
lbPic = tkinter.Label(root, text='cutpic', width=800, height=1200)
changePic(0)
lbPic.place(x=10, y=50, width=1200, height=800)

# 启动
root.mainloop()

运行界面

 

参考:https://pea328.blog.csdn.net/article/details/104885316

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值