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 ...
    0
    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).
      0
  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
    0
    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
      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 ?
        0