from tkinter import *
from PIL import ImageTk
import glob
def selection():
global picTk
picTk = Toplevel()
picTk.title('Photos')
picTk.geometry('800x600')
global photoimage_list
photoimage_list = []
for filepath in glob.glob('photos/*.gif'):
im = Image.open(filepath)
pic = ImageTk.PhotoImage(image=im)
photoimage_list.append(pic)
global lb1
global back_btn
global exit_btn
global for_btn
n = 0
img_show = photoimage_list[n]
lb1 = Label(picTk,image=img_show)
lb1.image = img_show
lb1.place(x=10,y=10)
back_btn = Button(picTk,text='<<',command=lambda:back(n),state=DISABLED)
back_btn.place(x=50,y=550)
exit_btn = Button(picTk,text='Exit',command=picTk.destroy)
exit_btn.place(x=350,y=550)
for_btn = Button(picTk,text='>>',command=lambda:forward(n),state=NORMAL)
for_btn.place(x=650,y=550)
picTk.mainloop()
def back(n):
lb1.grid_forget()
minus1 = photoimage_list[n-1]
lb1.configure(image=minus1)
lb1.image = minus1
for_btn.configure(state=NORMAL,command=lambda:forward(n+1))
back_btn.configure(state=NORMAL,command=lambda:back(n-1))
lb1.place(x=10,y=10)
back_btn.place(x=50,y=550)
exit_btn.place(x=350,y=550)
for_btn.place(x=650,y=550)
if minus1 == photoimage_list[0]:
back_btn.configure(state=DISABLED)
def forward(n):
lb1.grid_forget()
next2 = photoimage_list[n+1]
lb1.configure(image=next2)
lb1.image = next2
for_btn.configure(state=NORMAL,command=lambda:forward(n+1))
back_btn.configure(state=NORMAL,command=lambda:back(n-1))
lb1.place(x=10,y=10)
back_btn.place(x=50,y=550)
exit_btn.place(x=350,y=550)
for_btn.place(x=650,y=550)
if next2 == photoimage_list[-1]:
for_btn.configure(state=DISABLED)
tk = Tk()
tk.title('Home')
Label(tk,text='Photos of Dominic').pack(pady=10)
Button(tk,text='View Album',command=selection).pack(pady=10)
Exception in Tkinter callback
Traceback (most recent call last):
File "C:\Python38\lib\tkinter\__init__.py", line 1883, in __call__
return self.func(*args)
File "E:\Python\Python Projects Fun\photo_album.py", line 13, in selection
im = Image.open(filepath)
AttributeError: type object 'Image' has no attribute 'open'
Я изменил на glob.glob('photos/*.gif')
, чтобы указать файлы с форматом gif внутри папки «фотографии», но, тем не менее, я все еще получаю ошибку, что фотографии не могут быть загружены в новом окне. Я хотел бы спросить, чего не хватает, чтобы показать фотографию после того, как я нажал кнопку? Есть ли проблемы на линии im = Image.open(filepath)
, которые нужно изменить? Потому что я уже пишу pic = ImageTk.PhotoImage(image=im)
.