Insertion d'une image avec tkinter

Résolu
Bonjour,
J'essaie de programmer l'insertion d'une image grâce à tkinter mais il me retourne à chaque fois l'erreur 'TclError: image "pyimage5" doesn't exist'. J'aimerais savoir ce qui ne va pas dans mon code.

class Interface(Tk):
    def __init__(self, path_image):
        super(Interface, self).__init__()

        self.image = PhotoImage(file=path_image)
        self.w, self.h = self.image.width(), self.image.height()

        self.canvas = Canvas(self, width=self.w, height=self.h)
        self.canvas.pack()
        self.canvas.create_image((self.w//2, self.h//2), image=self.image)

        self.mainloop()



Interface(r"C:\Users\lbhad\OneDrive\Documents\BCPST\2\Informatique\logo2.png")


Configuration: Windows / Edge 87.0.664.75

4 réponses

  1. Bonjour Neirdah,

    Pourquoi l'erreur est-elle pyimage5 n'existe pas alors

    que tu passes en argument logo2.png ?????????

    D'autre part, peux-tu afficher ton code complet ?

    J'ai testé ton code avec une image à moi, ca marche très bien ...
    1. Car en mettant simplement 'logo2.png' le programme ne me trouve pas le fichier.
      Pour l'instant c'est mon programme complet mais je cherche comment le relié à un autre pour avoir l'image en fond (ce que pour l'instant je n'arrive pas à faire étant donné que je débute dans la programmation avec tkinter).
  2. Je ne te dis pas de mettre simplement logo2.png, je

    m'étonnes juste que le message d'erreur soit pyimage5

    n'existe pas

    Moi, j'ai copié/collé ton code et j'ai remplacé ton chemin et ton nom

    d'image par mon chemin et une image à moi et ça marche parfaitement
    1. Hello Neirdah,

      Alors, as-tu de la réussite ?
      Moi, j'ai fait ceci et ça marche:

      # -*- coding:Latin-1 -*-
      
      from tkinter import *
      
      class Interface(Tk):
          def __init__(self, path_image):
              super(Interface, self).__init__()
      
              self.image = PhotoImage(file=path_image)
              self.w, self.h = self.image.width()+10, self.image.height()+10
      
              self.canvas = Canvas(self, width=self.w, height=self.h)
              self.canvas.pack()
              self.canvas.create_image(self.w//2, self.h//2, image=self.image)
      
              self.mainloop()
      
      Interface(r"C:\Phil\Dev\Python\tests\ccm\images\Fresque_01.png")
      
      1. Cela marche à présent. J'aimerai savoir comment faire pour étendre l'image à l'ensemble de ma frame. Comment faire pour qu'elle s'adapte à sa taille ?