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()
运行界面