#python #tkinter
#python #tkinter
Вопрос:
Я пытаюсь создать слайд-шоу из изображений с помощью tkinter, но будет отображаться только первое изображение. Вот MCVE моего кода:
from tkinter import *
from PIL import ImageTk, Image
# create window
window = Tk()
window.geometry('1000x1000')
# function to display a series of images with a delay of 3seconds between each
def slideshow():
for i in range(3):
entry.delete(0, END)
canvas.delete("all")
entry.insert(0, str(i))
path = ('image' str(i) '.png')
image = ImageTk.PhotoImage(Image.open(path))
canvas.create_image(100, 100, anchor=CENTER, image=image)
window.after(3000)
window.mainloop()
# create widgets
buttonDisplayImages = Button(window, width=30, height=15, text='Display Images', command=lambda: slideshow())
entry = Entry(window, width=35, borderwidth=2)
canvas = Canvas(window, width=300, height=300)
buttonDisplayImages.grid(row=2, column=1)
entry.grid(row=1, column=1)
canvas.grid(row=3, column=1)
window.mainloop()
Когда я нажимаю кнопку, отображается только первое изображение, и когда я закрываю окно, я получаю сообщение об ошибке:
_tkinter.TclError: недопустимое имя команды «.!запись»
Любая помощь будет оценена.
Комментарии:
1. Вы не должны вызывать
window.mainloop()
внутри цикла for и addcanvas.image = image
иcanvas.update_idletasks()
beforewindow.after(3000)
.2. Это исправлено, большое спасибо!