Problème sur liste
KRO
-
KRO -
KRO -
Bonjour, je cherche à créer une liste pour raccourcir et clarifier un peu mon programme mais cela ne fonctionne pas et je ne vois pas d'où provient l'erreur si quelqu'un sait me répondre... merci beaucoup
Voici mon message d'erreur : IndexError: list index out of range
import tkinter as tk import os from PIL import Image, ImageTk root = tk.Tk() dx = tk.IntVar() dy = tk.IntVar() canvas=tk.Canvas(root, width=500, height=400, bg='white') canvas.pack(padx=10,pady=10) #Chemin pour les images script_dir = os.path.dirname(__file__) rel_path = "/images/" abs_file_path = script_dir + rel_path liste_images = ["clarys.png", "baptiste.png", "anais.png", "allan.png", "arnold.png", "thomas.png", "ayoub.png", "caroline.png", "deborah.png", "louis.png", "paul.png", "nono.png"] for nom in ["clarys", "baptiste", "anais", "allan", "arnold", "thomas", "ayoub", "caroline", "deborah", "louis", "paul", "nono"] : images = Image.open(abs_file_path + nom + ".png") photo = ImageTk.PhotoImage(images) liste_images.append(canvas.create_image(180,0,image=photo)) for uneimage in liste_images : dx.set(0) dy.set(5) if canvas.coords(uneimage)[1]>400 : canvas.coords(uneimage,180,0) canvas.move(uneimage,dx.get(),dy.get()) root.mainloop()
Voici mon message d'erreur : IndexError: list index out of range
A voir également:
- Problème sur liste
- Liste déroulante excel - Guide
- Liste déroulante en cascade - Guide
- Liste code ascii - Guide
- Site dangereux liste - Guide
- Comment cacher sa liste d'amis sur facebook - Guide
1 réponse
yg_be
Messages postés
23541
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 584
bonsoir, sur quelle ligne as-tu le message d'erreur?
Cela est tout de même flagrant.
Tu définis dans liste_images des noms d'images avec leur extension, puis ensuite tu y ajoutes les identifiants des images sur le canvas, déjà là, 1ère erreur car tu mélanges torchons et serviettes.
Et forcément, lorsque tu fais , uneimage (qui contient donc tes xxx.png), tkinter ne les trouve pas sur ton canvas et il retourne une liste (ou tuple je sais plus) vide, et donc l'index 1 n'existe pas dans cette liste, d'où l'erreur.
Autre chose, pourquoi donc faire alors que tes noms d'images sont déjà enregistrées dans ta liste ?
Et je pense que tkinter va seulement afficher ta dernière image, puisque dans ta boucle tu écrases chaque fois la référence à l'image