Comment insérer une image dans mon code python à l'aide de Tkinter ?

Résolu
SimFasa Messages postés 10 Statut Membre -  
Phil_1857 Messages postés 1883 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour, voila nous sommes débutants en programmation et nous avons comme projet de fin d'année de programmer un "PACMAN", seulement on arrive pas à insérer les photos des fantomes. Voila nous avons 3 photos ( Fantomes rouges, rose et jaune ) en format .gif mais je n'arrive pas à les inclure dans mon code sachant que nous avons déja réussie à faire se déplacer les fantômes. Après des recherches sur internet je suis parvenu à trouver une "solution" mais elle ne fonctionne pas :/
Voila le début de mon code est :

from PIL import Image, ImageTk
import tkinter as tk
import ctypes
import random


Ensuite il y a pour le fantômes rouge, c'est le seul que j'ai tester pour le moment :

imageRed = Image.open("5IPe.gif")
photoRed = ImageTk.PhotoImage(imageRed)
fantome1 = terrain.create_imageRed(200,500, imageRed=photoRed)


Seulement quand j'essaie de lancer le jeu, j'ai un message d'erreur qui s'affiche :

File "D:\Ne_Pas_Supprimer\Documents\ICN\PACMAN-20042020.py", line 161, in <module>
fantome1 = terrain.create_imageRed(200,500, imageRed=photoRed)

AttributeError: 'Canvas' object has no attribute 'create_imageRed'


Et je ne sais pas pourquoi cela me met un message d'erreur.... Est ce que vous auriez une solution ? Est ce que c'est une erreur ailleurs dans mon code ou alors est ce que je n'utilise pas du tout la bonne manière pour insérer une image ? Merci de vos réponses.

4 réponses

  1. Phil_1857 Messages postés 1883 Date d'inscription   Statut Membre Dernière intervention   169
     
    Bonjour Simfasa,

    "terrain", c'est bien un Canvas ?

    Et tu as vu dans la doc tkinter que les Canvas ont un attribut create_imageRed ?

    Moi pas … par contre je vois un attribut create_image ….

    Je ne sais pas si tu maitrise bien ce que tu fais, ou si tu as copié/collé au hasard, mais ce n'est pas parce que tu créé une image rouge que tu peux inventer un attribut create_imageRed

    Moi, je fais simplement ça (pas besoin de PIL, juste tkinter) :

    red_image = tk.PhotoImage(file='5IPe.gif')
    terrain.create_image(200, 500, image = red_image)
    
    1
    1. SimFasa Messages postés 10 Statut Membre
       
      D'accord merci beaucoup, je vais essayer avec votre explication.
      0
  2. Phil_1857 Messages postés 1883 Date d'inscription   Statut Membre Dernière intervention   169
     
    Dis moi si ca marche, ce serait sympa :-)
    1
  3. Phil_1857 Messages postés 1883 Date d'inscription   Statut Membre Dernière intervention   169
     
    Holà Simfasa,

    Tu n'as pas dit si ça fonctionne ou pas ?

    :-)
    1
    1. SimFasa Messages postés 10 Statut Membre
       
      Bonjour ! Vraiment désolé du retard pour la réponse.
      En utilisant ce que vous m'avez proposez j'en suis arrivée avec mon amie à :

      rouge=tk.PhotoImage(master=fenetre, file='rouge.png')
      fantome_rouge=terrain.create_image(15, 45, image=rouge)
      rose= tk.PhotoImage(master=fenetre, file='rose.png')
      fantome_rose=terrain.create_image(45, 75, image=rose)
      orange= tk.PhotoImage(master=fenetre, file='orange.png')
      fantome_orange=terrain.create_image(75, 105, image=orange)
      bleu= tk.PhotoImage(master=fenetre, file='bleu.png')
      fantome_bleu=terrain.create_image(105, 135, image=bleu)

      Et voila, ça fonctionne très bien. Merci beaucoup pour l'idée :)
      0
  4. Phil_1857 Messages postés 1883 Date d'inscription   Statut Membre Dernière intervention   169
     
    Ah super !!

    Tu peux marquer cet appel comme "résolu" pour le fermer :-)
    1