I have a python code with GUI. I want use this code to show images from different folders. I have buttons for the folders, one button to go FORWARD and one to go BACK. The code, after choosing the folder start showing images from the first one in sequence (names of each image are: 0_xxxx.jpg, 1_xxxx.jpg...). FORWARD works, BACK does not. Any suggestions? import os import tkinter as tk from PIL import Image, ImageTk # Funzione per ottenere il percorso assoluto della cartella corrente def get_current_folder(): return os.path.dirname(os.path.abspath(__file__)) # Funzione per caricare tutte le immagini di un gruppo (cartella) e ordinarle alfabeticamente def load_images_from_group(folder, group_name): group_folder = os.path.join(folder, group_name) if not os.path.exists(group_folder): print(f"Gruppo {group_name} non trovato!") return [] supported_extensions = ('.png', '.jpg', '.jpeg', '.gif', '.bmp') images = [] for file_name in os.listdir(group_folder): if file_name.lower().endswith(supported_extensions): images.append(os.path.join(group_folder, file_name)) images.sort() # Ordina le immagini in ordine alfabetico return images # Funzione per cambiare l'immagine def change_image(img_list, index, label): image_path = img_list[index] img = Image.open(image_path) img = ImageTk.PhotoImage(img.resize((500, 500))) # Ridimensiona l'immagine per adattarla alla finestra label.config(image=img) label.image = img # Necessario per evitare che l'immagine venga "garbage collected" # Funzione per avanzare def next_image(img_list, index, label, btn_next, btn_prev): if index < len(img_list) - 1: # Controlla se non siamo all'ultima immagine index += 1 change_image(img_list, index, label) if index == len(img_list) - 1: # Se siamo all'ultima immagine, disabilita il pulsante AVANTI btn_next.config(state=tk.DISABLED) btn_prev.config(state=tk.NORMAL) # Riabilita il pulsante INDIETRO return index # Funzione per tornare indietro def prev_image(img_list, index, label, btn_next, btn_prev): if index > 0: # Controlla se non siamo alla prima immagine index -= 1 change_image(img_list, index, label) if index == 0: # Se siamo alla prima immagine, disabilita il pulsante INDIETRO btn_prev.config(state=tk.DISABLED) btn_next.config(state=tk.NORMAL) # Riabilita il pulsante AVANTI return index # Funzione per cambiare gruppo def change_group(group_name, folder, label, btn_next, btn_prev): global index, img_list img_list = load_images_from_group(folder, group_name) # Carica il gruppo di immagini if not img_list: print(f"Nessuna immagine trovata nel gruppo {group_name}.") return index = 0 # Reset dell'indice change_image(img_list, index, label) # Cambia la prima immagine # Abilita i pulsanti in base all'indice if len(img_list) > 1: btn_next.config(state=tk.NORMAL) btn_prev.config(state=tk.DISABLED) # Disabilita il pulsante INDIETRO se siamo alla prima immagine else: btn_next.config(state=tk.DISABLED) # Se c'è solo una immagine, disabilita AVANTI btn_prev.config(state=tk.DISABLED) # Disabilita anche INDIETRO se c'è solo una immagine # Funzione principale che crea la finestra e gestisce l'interfaccia def create_gui(): global folder, index, img_list folder = get_current_folder() # Ottieni la cartella corrente # Crea la finestra principale root = tk.Tk() root.title("Visualizzatore di Immagini per Gruppo") # Etichetta per visualizzare le immagini label = tk.Label(root) label.pack(pady=20) # Inizializza l'indice dell'immagine corrente index = 0 img_list = [] # Frame per i pulsanti button_frame = tk.Frame(root) button_frame.pack(side=tk.BOTTOM, pady=10) # Pulsante per selezionare il gruppo "HOME" btn_HOME = tk.Button(button_frame, text="HOME", command=lambda: change_group("HOME", folder, label, btn_next, btn_prev)) btn_HOME.pack(side=tk.LEFT, padx=10) # Pulsante per selezionare il gruppo "JOB" btn_JOB = tk.Button(button_frame, text="JOB", command=lambda: change_group("JOB", folder, label, btn_next, btn_prev)) btn_JOB.pack(side=tk.LEFT, padx=10) # FORWARD BUTTON btn_next = tk.Button(button_frame, text="AVANTI", command=lambda: next_image(img_list, index, label, btn_next, btn_prev)) btn_next.pack(side=tk.LEFT, padx=10) # BACK BUTTON btn_prev = tk.Button(button_frame, text="INDIETRO", command=lambda: prev_image(img_list, index, label, btn_next, btn_prev)) btn_prev.pack(side=tk.LEFT, padx=10) # Avvia l'interfaccia grafica root.mainloop() if __name__ == "__main__": create_gui() Continue reading...