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 :

_tkinter pyimage doesn't exist


Sujet :

Tkinter Python

  1. #1
    P.G
    P.G est déconnecté
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    158
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 158
    Points : 73
    Points
    73
    Par défaut _tkinter pyimage doesn't exist
    Bonjour à tous,

    Je me mets à l'étude approfondie de tkinter.
    J'essaye de faire un bouton avec une image intégrée avec le code ci-dessous tiré d'un livre :
    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
     
    import tkinter as tk
     
    RELIEFS = [tk.SUNKEN, tk.RAISED, tk.GROOVE, tk.RIDGE, tk.FLAT]
     
    class ButtonsApp(tk.Tk):
        def __init__(self):
            super().__init__()
            self.img = tk.PhotoImage(file="python.gif")
            self.btn = tk.Button(self, text="Button with image",
                                 image=self.img, compound=tk.LEFT,
                                 command=self.disable_btn)
            self.btns = [self.create_btn(r) for r in RELIEFS]        
            self.btn.pack()
            for btn in self.btns:
                btn.pack(padx=10, pady=10, side=tk.LEFT)
     
        def create_btn(self, relief):
            return tk.Button(self, text=relief, relief=relief)
     
        def disable_btn(self):
            self.btn.config(state=tk.DISABLED)
     
    if __name__ == "__main__":
        app = ButtonsApp()
        app.mainloop()
    Ce code produit bien le résultat escompté sur un de mes postes sous W10 avec winpython et spyder.

    Je souhaite le faire fonctionner sur un poste plus ancien en python 3.4 avec Pyzo et là le message d'erreur _tkinter.TclError: image "pyimage7" doesn't exist
    bloque le processus, une solution à mettre en œuvre est d'utiliser Toplevel().

    Mais là je ne vois pas du tout où mettre cette commande dans le code ci dessus.

    Par avance merci pour votre aide.

    P.G
    .

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    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 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Citation Envoyé par P.G Voir le message
    Je souhaite le faire fonctionner sur un poste plus ancien en python 3.4 avec Pyzo et là le message d'erreur _tkinter.TclError: image "pyimage7" doesn't exist
    Vous installez Python 3.4 et vous essayez de reproduire le problème.

    Ce que vous fabriquez avec WinPython, Pyzo, spider c'est des programmes. Une fois réalisé, çà doit marcher sans l'outil qui a permis de le construire.

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

  3. #3
    P.G
    P.G est déconnecté
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    158
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 158
    Points : 73
    Points
    73
    Par défaut
    Hello

    Merci pour votre réponse rapide.

    Le problème est que le comportement attendu dépend quand même de l'outil utilisé visiblement.

    Et Toplevel() dans l'exemple proposé il se met où ?

    Merci encore.

    P.

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    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 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Citation Envoyé par P.G Voir le message
    Et Toplevel() dans l'exemple proposé il se met où ?
    Toplevel est supposé corriger ce genre de problème qui arrive avec plusieurs instances de Tk: on réserve Tk pour la fenêtre principale et on remplace les suivants par Toplevel.

    Le code ne contient qu'une seule instance de Tk et doit fonctionner.
    S'il ne fonctionne pas dans certains environnements, ce n'est pas le code qui est en défaut (ni la version de Python modulo le remplacement de tkinter par Tkinter).

    Citation Envoyé par P.G Voir le message
    Le problème est que le comportement attendu dépend quand même de l'outil utilisé visiblement.
    Le seul juge est l'interpréteur Python brut de fonderie.
    Les outils qui vous aident à créer des programmes sont des choix personnels.
    Ils n'ont pas à être utilisés pour montrer que le programme fonctionne (ou pas).
    Ou c'est plutôt le problème de ces outils plutôt qu'un problème Python.

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

  5. #5
    P.G
    P.G est déconnecté
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    158
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 158
    Points : 73
    Points
    73
    Par défaut
    Bonjour et merci pour votre réponse rapide.

    Je comprends bien vos éléments sur Python d'origine les EDI etc ...

    Néanmoins je souhaiterait dans le code ci-dessus mettre Toplevel() sur ma fenêtre principale pour vérifier et comparer différentes installations, dans ce cas où dois-je placer ce code ?

    Par avance merci pour vos réponses;

    p;

  6. #6
    Expert éminent
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    3 823
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 823
    Points : 7 119
    Points
    7 119
    Par défaut
    Hello,

    @P.G

    Comme annoncé précédemment, Toplevel qui sert à créer une fenêtre secondaire, ne résoudra pas votre problème.

    Pas la peine d'insister sur une solution qui n'a absolument rien à voir avec votre problème d'image. Toplevel résout souvent une erreur que font les débutant en créant plusieurs instance Tk, et cela a été dit aussi par @wiztricks, c'est donc un autre problème que vous n'avez pas pour l'instant.
    Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
    La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)

  7. #7
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    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 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Salut,

    Citation Envoyé par P.G Voir le message
    Néanmoins je souhaiterait dans le code ci-dessus mettre Toplevel() sur ma fenêtre principale pour vérifier et comparer différentes installations, dans ce cas où dois-je placer ce code ?
    Vous pouvez essayer d'ajouter master=self à la ligne 9:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
              self.img =tk.PhotoImage(file="python.gif", master=self)
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  8. #8
    P.G
    P.G est déconnecté
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    158
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 158
    Points : 73
    Points
    73
    Par défaut
    Bonjour à vous deux,

    Grâce aux liens indiqués en bas de page avec d'anciens post sur le sujet voilà la solution à mon problème :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    class ButtonsApp(tk.Tk):
        def __init__(self):
            super().__init__()
            self.img = tk.PhotoImage(file="python.gif", master=self)
            self.btn = tk.Button(self, text="Button with image",
                                 image=self.img, compound=tk.LEFT,
                                 command=self.disable_btn)
            self.btns = [self.create_btn(r) for r in RELIEFS]        
            self.btn.pack()
            for btn in self.btns:
                btn.pack(padx=10, pady=10, side=tk.LEFT)
    Merci encore.

    P.

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

Discussions similaires

  1. _tkinter.TclError: image "pyimage2" doesn't exist"
    Par KROCLARYS dans le forum Tkinter
    Réponses: 5
    Dernier message: 20/05/2018, 10h48
  2. _tkinter.TclError: image "pyimage2" doesn't exist"
    Par KROCLARYS dans le forum Général Python
    Réponses: 4
    Dernier message: 20/05/2018, 10h39
  3. Réponses: 3
    Dernier message: 29/07/2012, 21h03
  4. Erreur #1146 - Table 'zzz.joggings' doesn't exist...
    Par fabreizhad dans le forum Débuter
    Réponses: 15
    Dernier message: 03/12/2005, 00h47
  5. [ERROR] region-name doesn't exist in the layout-master-set
    Par Elea49 dans le forum XML/XSL et SOAP
    Réponses: 7
    Dernier message: 31/08/2005, 07h43

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