Приложение для просмотра изображений: функция отображения следующего изображения не работает

#python #tkinter

#python #tkinter

Вопрос:

Я смотрел это руководство по YouTube и (как мне показалось) получил лучшую идею решения проблемы создания приложения для просмотра изображений.

Но при вводе ничего не происходит, и я не понимаю почему, я думаю, что, возможно, я совершенно неправильно понял список, поскольку он не начинается с первого изображения (индекс 0).

Код здесь


 from tkinter import * 
from PIL import ImageTk,Image
i = 0
root = Tk()
root.title("Learning to code")
root.iconbitmap('blue.PNG')

my_img1 = ImageTk.PhotoImage(Image.open("picsme1.JFIF"))
my_img2 = ImageTk.PhotoImage(Image.open("picsme2.JPG"))
my_img3 = ImageTk.PhotoImage(Image.open("picsme3.JPG"))
my_img4 = ImageTk.PhotoImage(Image.open("picsme4.JPG"))
my_img5 = ImageTk.PhotoImage(Image.open("picspop.JPG"))
img_list = [my_img1,my_img2,my_img3,my_img4,my_img5]

my_label = Label(image=img_list[i])
my_label.grid(row=0,column=0,columnspan=3)

def f_fwd():
    global i
    global my_label
    if i < 4 :
        my_label.grid_forget()
        i = 1
        my_label = Label(image=img_list[i])
        my_label.grid(row=0,column=0,columnspan=3)

def f_bwd():
    return
    
button_bwd = Button(root, text= "<<")
button_bwd.grid(row=1,column=0)
button_quit =Button(root, text="Exit", command= root.quit)
button_quit.grid(row=1,column=1)
button_fwd = Button(root, text=">>", command=f_fwd())
button_fwd.grid(row=1,column=2)

root.mainloop()
  

Извините, если я плохо сформулировал проблему.
Я ожидал, что индекс увеличится и отобразит следующее изображение в списке, когда f_fwd функция вызывается из команды button, и я не понимаю, почему она не работает.

Комментарии:

1. i = 1 вероятно, должно быть i = 1

2. command=f_fwd без ()

3. Решаемая. Большое спасибо, ребята <3

4. Почему вы удаляете метку из сетки, а затем возвращаете ее обратно? Все, что вам нужно сделать в этом цикле, это использовать my_label.configure(image=img_list[i]) для установки нового изображения на Label . Также my_label это ужасное имя. Это не дает вам ни малейшего представления о том, для чего оно используется. img_slide или что-то в этом роде имело бы больше смысла.