IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

message d'erreur dont je comprends pas la raison


Sujet :

Python

  1. #1
    Nouveau candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2020
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2020
    Messages : 2
    Par défaut message d'erreur dont je comprends pas la raison
    Bonjour, tout d'abord, je tiens à préciser que je suis nouveau sur le forum et dans le monde de la programmation en plus, je suis pas aidé de nature, alors soyez indulgents, s'il vous plaît.

    Donc, pour introduire le contexte, je suis en première, spécialité NSI, j'ai commencé cette année. J'avais déjà quelque base à cause des cours de maths de l'an précédent, mais vraiment sans plus.
    Pendant les vacances de la Toussaint, nous avions un programme à réaliser. Étant donné que nous avions le champ libre, j'ai choisi de faire un mémory avec des images de chats.
    J'ai écrit une bonne partie du programme, mais là, je suis bloqué par une erreur qui me suit depuis mon cours de mardi. C'est pourquoi je viens demander de l'aide ici.

    Voici le programme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    from tkinter import *
    from random import *
     
    #Création des variables liées aux images et au quadrillage
     
    tailleimage=120
    ecart=10
    cote=tailleimage+ecart
     
    nblignes=4
    nbcolonnes=5
    nbimages=nblignes*nbcolonnes//2
     
    largeur=cote*nbcolonnes
    longueur=cote*nblignes
    x0=y0=cote//2
     
    cartes=['chat_casquette','chat_débile','chat_élastique','chat_étonné','chat_festif','chat_lgbt','chat_lunettes','chat_postit','chat_riche','chat_vampire']
     
    #Création du plateau
     
    def creer_plateau():
        L=[v % nbimages for v in range(2*nbimages)]   #Génération d'une liste d'entiers aléatoires dans une liste provisoire "L".
        shuffle(L)                                    #Mélange de la liste avec la fonction shuffle
        board=[]
        k=0
        for line in range(nblignes):                  #Placement ligne par ligne et colonne par colonne de la liste L mélangée dans le tableau board
            row=[]
            for col in range(nbcolonnes):
                row.append(L[k])
                k+=1
            board.append(row)
        return board
     
    #Placement des images
     
    def placement(zg,board,couverture,cartes,ids_couverture):
        for ligne in range (nblignes):                  #On parcourt la future grille par indice de ligne et de colonne et, en même temps, on accède à la même position dans board
            for colonne in range (nbcolonnes):          #Puis, on demande au canevas de dessiner d’abord la carte puis de le recouvrir avec l’image de couverture
                centre=(x0+colonne*cote,y0+ligne*cote)  #Pour dessiner la carte, il suffit de récupérer l’équivalent entier de cette carte dans board (ligne 60), puis d’accéder à la version PhotoImage correspondante (ligne 61)
                num_image=board[ligne][colonne]
                mon_image=cartes[num_image]
                zg.create_image(centre, image=mon_image)
                id_couverture=zg.create_image(centre,image=couverture)     #On récupère l’id de chacune des 20 images de couverture utilisées
                ids_couverture[ligne][colonne]=id_couverture
     
    #Identification de la carte avec un clic
     
    def clic(event):
        x=event.x
        y=event.y
        colonne=x//cote
        ligne=y//cote
        zg.delete(ids_couverture[ligne][colonne])
        i=board[ligne][colonne]
        print(cartes[i].upper())
     
    #Création de la fenêtre
     
    fenetre1=Tk()
    fenetre1.title('Mémory')
    zg=Canvas(fenetre1, width=largeur, height=longueur,bg='white')
    zg.pack()
    zg.bind("<Button>", clic)
     
    #Chargement des images
     
    couverture=PhotoImage(file="dos.gif")
    images=[PhotoImage(file="%s.gif" %nomfichier) for nomfichier in cartes]     #Création d'une liste qui convertit chaque image gif dans un format utilisable par Tkinter
    ids_couverture=[[None for j in range (nbcolonnes)] for i in range (nblignes)]
     
    board=creer_plateau()
    placement(zg,board,couverture,cartes,ids_couverture)
     
    fenetre1.mainloop()
    Voici le message d'erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Traceback (most recent call last):
      File "C:\Users\Matéo\Desktop\memory\cartes\memory v3.py", line 73, in <module>
        placement(zg,board,couverture,cartes,ids_couverture)
      File "C:\Users\Matéo\Desktop\memory\cartes\memory v3.py", line 43, in placement
        zg.create_image(centre, image=mon_image)
      File "D:\Logiciels\EduPython\App\lib\tkinter\__init__.py", line 2332, in create_image
        return self._create('image', args, kw)
      File "D:\Logiciels\EduPython\App\lib\tkinter\__init__.py", line 2323, in _create
        *(args + self._options(cnf, kw))))
    _tkinter.TclError: image "chat_riche" doesn't exist
    (Je tiens à préciser que j'ai vérifié :
    -l'orthographe de tous les gif que j'ai utilisé dans mon programme, et que rien ne semble anormal
    -que toutes les cartes étaient bien définies, ce qui est le cas dans la liste "cartes"

    De plus, les cartes sont stockées dans le même dossier que mon programme et le message d'erreur change à chaque fois de carte: elles sont toutes considérées comme non existantes.)


    Voici le dossier où est mon programme (les programmes bleutés sont des versions antérieures).

    Nom : Capture.PNG
Affichages : 70
Taille : 281,2 Ko

    Merci d'avance à ceux qui m'aideront !
    Fichiers attachés Fichiers attachés

  2. #2
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 720
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 720
    Par défaut
    Salut,

    Faites attention au message d'erreur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    _tkinter.TclError: image "chat_riche" doesn't exist
    En remontant dans la pile d'erreur, vous trouvez la dernière instruction exécutée dans votre code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
      File "C:\Users\Matéo\Desktop\memory\cartes\memory v3.py", line 43, in placement
        zg.create_image(centre, image=mon_image)
    La question devient "d'où sort mon_image?"
    De 2 lignes de code plus haut:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
                  mon_image=cartes[num_image]
    et cartes étant défini par:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cartes=['chat_casquette','chat_débile','chat_élastique','chat_étonné','chat_festif','chat_lgbt','chat_lunettes','chat_postit','chat_riche','chat_vampire']
    on y retrouve bien la chaine de caractères "chat_riche" qui n'est visiblement pas une PhotoImage.

    La question devient alors "pourquoi avoir écrit la ligne 69?"...
    Mais çà c'est à vous d'y répondre.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Nouveau candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2020
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2020
    Messages : 2
    Par défaut
    J'ai trouvé la solution à mon problème, il s'agissait en fait d'une confusion dans la définition de "mon_image", ligne 36.
    En effet, j'avais défini "mon_image" avec la liste "cartes" au lieu de la liste "images", ce qui faisait qu'elle étaient considérées comme inexistantes.

    Merci beaucoup de l'aide !

Discussions similaires

  1. Message d'erreur ! Je ne sais pas d'où il vient.
    Par pazze dans le forum Débuter
    Réponses: 5
    Dernier message: 15/02/2009, 23h18
  2. [MySQL] Message d'erreur ne s'affiche pas !
    Par CaLeDo dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 17/07/2007, 01h10
  3. Message d erreur qd je suis pas sur la bonne feuille
    Par johndeuf dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 07/12/2006, 22h58
  4. Erreur que je comprends pas
    Par makohsarah dans le forum Langage
    Réponses: 1
    Dernier message: 30/08/2006, 18h14
  5. Réponses: 2
    Dernier message: 29/05/2006, 12h43

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo