Вы можете создать итератор в списке файлов, возвращаемом os.listdir(...)
:
imagelist = iter(os.listdir(SourceList.source))
Затем создайте функцию для отображения изображения:
def NextImage():
global fullname
fname = next(imagelist, None)
fullname = os.path.join(SourceList.source, fname) if fname else None
if fullname:
photo = Image.open(fullname).resize((750, 500), Image.ANTIALIAS)
img = ImageTk.PhotoImage(photo)
# update panel instead of creating new one
panel.config(image=img)
else:
# create a blank image
photo = Image.new('RGB', (750, 500), 'white')
img = ImageTk.PhotoImage(photo)
panel.config(text='No more image', font=('Arial', 64, 'bold'), image=img, compound=tk.CENTER)
panel.image = img
и измените MoveIm()
функция для перемещения текущего изображения и отображения следующего изображения:
def MoveIm():
if fullname:
# and move the image
shutil.move(fullname, 'C:\\Dest\\')
# show next image
NextImage()
Ниже приведен пример:
import tkinter as tk
from PIL import Image, ImageTk
import os
import shutil
# simulate your SourceList object
class SourceList:
source = '/path/to/images'
def NextImage():
global fullname
fname = next(imagelist, None)
fullname = os.path.join(SourceList.source, fname) if fname else None
if fullname:
photo = Image.open(fullname).resize((750, 500), Image.ANTIALIAS)
img = ImageTk.PhotoImage(photo)
# update panel instead of creating new one
panel.config(image=img)
else:
# create a blank image
photo = Image.new('RGB', (750, 500), 'white')
img = ImageTk.PhotoImage(photo)
panel.config(text='No more image', font=('Arial', 64, 'bold'), image=img, compound=tk.CENTER)
panel.image = img
def MoveIm():
if fullname:
# and move the image
shutil.move(fullname, 'C:\\Dest\\')
# show next image
NextImage()
root = tk.Tk()
panel = tk.Label(root)
panel.pack()
button1 = tk.Button(root, text='Dest', command=MoveIm)
button1.pack()
imagelist = iter(os.listdir(SourceList.source))
NextImage() # show the first image
root.mainloop()