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

Signaler
Messages postés
3
Date d'inscription
mercredi 22 avril 2020
Statut
Membre
Dernière intervention
29 avril 2020
-
Messages postés
363
Date d'inscription
lundi 23 mars 2020
Statut
Membre
Dernière intervention
18 septembre 2020
-
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

Messages postés
363
Date d'inscription
lundi 23 mars 2020
Statut
Membre
Dernière intervention
18 septembre 2020
57
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)
Messages postés
3
Date d'inscription
mercredi 22 avril 2020
Statut
Membre
Dernière intervention
29 avril 2020

D'accord merci beaucoup, je vais essayer avec votre explication.
Messages postés
363
Date d'inscription
lundi 23 mars 2020
Statut
Membre
Dernière intervention
18 septembre 2020
57
Dis moi si ca marche, ce serait sympa :-)
Messages postés
363
Date d'inscription
lundi 23 mars 2020
Statut
Membre
Dernière intervention
18 septembre 2020
57
Holà Simfasa,

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

:-)
Messages postés
3
Date d'inscription
mercredi 22 avril 2020
Statut
Membre
Dernière intervention
29 avril 2020

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 :)
Messages postés
363
Date d'inscription
lundi 23 mars 2020
Statut
Membre
Dernière intervention
18 septembre 2020
57
Ah super !!

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