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

Tkinter Python Discussion :

Problème affichage image Tkinter


Sujet :

Tkinter Python

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 10
    Points : 7
    Points
    7
    Par défaut Problème affichage image Tkinter
    Bonjour,
    je souhaite afficher une image avec ce bout de code :

    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
    def image(valeur):
        catalogue={0:'herbe1515.gif', 1:'herbe1515.gif', 2:'herbe1515.gif'}
        image=catalogue[valeur]
        return image
     
    def afficheMat(lieu, tailMat, marge, case, matrice):
        for index in range(tailMat.x):
            for sousindex in range(tailMat.y):
                pos=position(lieu, marge, case, index, sousindex)
                valeur=matrice[index][sousindex]
                img=PhotoImage(file='%s'%(image(valeur)))
                lieu.create_image(pos.x,pos.y, image=img)
     
     
    Seulement je tombe sur cette erreur :
    Exception in Tkinter callback
    Traceback (most recent call last):
      File "C:\Program Files\Python3.1.2\lib\tkinter\__init__.py", line 1399, in __call__
        return self.func(*args)
      File "D:\Docs\Programmation\Python\Champ\Champ1.1.py", line 68, in valid
        afficheMat(can, tailMat, p0, case, matrice)
      File "D:\Docs\Programmation\Python\Champ\Champ1.1.py", line 51, in afficheMat
        lieu.create_image(pos.x,pos.y, image=img)
      File "C:\Program Files\Python3.1.2\lib\tkinter\__init__.py", line 2140, in create_image
        return self._create('image', args, kw)
      File "C:\Program Files\Python3.1.2\lib\tkinter\__init__.py", line 2131, in _create
        *(args + self._options(cnf, kw))))
    _tkinter.TclError: image "pyimage1" doesn't exist

    Merci de me dire où je me suis trompé dans mon programme sachant que je n'ai rien appelé pyimage1, je ne comprend pas le message d'erreur.

  2. #2
    Expert confirmé Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Points : 4 005
    Points
    4 005
    Par défaut
    Bonjour,

    Tu dois avoir plusieurs intances Tk dans ton code.

    @+

  3. #3
    Membre éprouvé
    Avatar de afranck64
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2009
    Messages
    592
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2009
    Messages : 592
    Points : 1 006
    Points
    1 006
    Par défaut
    Bonjour,

    pour creer une image dans le cas ou tu as plusieurs fenetres te il faut preciser le master de l image.

    Une fois l image creer il te faut conserver l image dans une variable jusqu a ce que tu n en ait plus besoin sinon elle disparaitra.

    @+ et bon code

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 10
    Points : 7
    Points
    7
    Par défaut
    Merci pour ces réponses.
    J'ai utilisé un Toplevel() au lieu de Tk(), je n'ai plus d'erreur.
    Malheureusement, comme vous me l'aviez dis, l'image ne s'affiche pas en utilisant ce code :
    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
     
    def image(valeur):
        " Associe une image à une valeur dans la matrice "
        catalogue={0:'Images\mouton1515.gif', 1:'Images\mouton1515.gif', 2:'Images\loup1515.gif'}
        image=catalogue[valeur]
        return image
     
     
    def afficheMat(lieu, tailMat, marge, case, matrice):
        " Affiche le contenu de la matrice dans la grille "
        for index in range(tailMat.x):
            for sousindex in range(tailMat.y):
                pos=position(lieu, marge, case, index, sousindex)
                valeur=matrice[index][sousindex]
                img=PhotoImage(file='%s'%(image(valeur)))
                lieu.create_image(pos.x,pos.y, image=img)
    Si j'ai bien compris, c'est parce que img n'est pas constante, malheureusement, j'ai besoin qu'elle soit variable.
    Je ne vois pas comment résoudre mon problème, j'ai essayé en mettant un nom de variable qui change :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    img0=PhotoImage(file='%s'%(image(0)))
    lieu.create_image(pos.x,pos.y, image='img%s'%(valeur))
    mais il me retourne cette erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    Exception in Tkinter callback
    Traceback (most recent call last):
      File "C:\Program Files\Python3.1.2\lib\tkinter\__init__.py", line 1399, in __call__
        return self.func(*args)
      File "D:\Docs\Programmation\Python\Champ\Champ1.1.py", line 69, in valid
        afficheMat(can, tailMat, p0, case, matrice)
      File "D:\Docs\Programmation\Python\Champ\Champ1.1.py", line 52, in afficheMat
        lieu.create_image(pos.x,pos.y, image='img%s'%(valeur))
      File "C:\Program Files\Python3.1.2\lib\tkinter\__init__.py", line 2140, in create_image
        return self._create('image', args, kw)
      File "C:\Program Files\Python3.1.2\lib\tkinter\__init__.py", line 2131, in _create
        *(args + self._options(cnf, kw))))
    _tkinter.TclError: image "img0" doesn't exist
    Si vous connaissez une méthode pour résoudre ce problème, merci de me l'indiquer.

  5. #5
    Expert confirmé Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Points : 4 005
    Points
    4 005
    Par défaut
    Bonjour,

    Garde la référence

    @+

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 10
    Points : 7
    Points
    7
    Par défaut
    Merci, je retrouvais plus cette page.

    ça marche donc en utilisant ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    def afficheMat(lieu, tailMat, marge, case, matrice):
        " Affiche le contenu de la matrice dans la grille "
        for index in range(tailMat.x):
            for sousindex in range(tailMat.y):
                pos=position(lieu, marge, case, index, sousindex)
                valeur=matrice[index][sousindex]
                img=PhotoImage(file='%s'%(image(valeur)))
                gifsdict['%s %s'%(index,sousindex)]=img
                lieu.create_image(pos.x,pos.y, image=img)
    Merci à tous pour vos réponses très rapides

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème affichage Images
    Par jason69 dans le forum Mise en page CSS
    Réponses: 2
    Dernier message: 06/03/2007, 20h19
  2. [MySQL] problème affichage image avec sql
    Par igaurillac dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 14/02/2007, 18h04
  3. [VB]Problème affichage image dans IE6
    Par flogreg dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 20/02/2006, 18h41
  4. Problème affichage image dans IE6
    Par flogreg dans le forum IE
    Réponses: 6
    Dernier message: 13/02/2006, 14h29
  5. problème affichage image
    Par thealpacino dans le forum Balisage (X)HTML et validation W3C
    Réponses: 8
    Dernier message: 30/05/2005, 13h56

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