Salut à tous,

je ne sais pas si mon titre de sujet est très explicite, je ne sais pas trop comment exprimer le problème que je rencontre.
Je m'explique :

J'ai une class Carte qui me gère la création d'objets Carte (à jouer, mais à la limite, on s'en fout). J'ai une classe App qui gère mon "application" qui à terme ne s'occupera que du fenêtrage et de l'interaction avec le joueur, mais qui pour l'instant pour mes essais me sert de "jeu".

Je crée donc une instance de Carte pour tester, ça roule impecable. Je suis content, je passe donc à la phase suivant, mettre une image.

(je suis sous Tkinter)
donc, hop, pic = PhotoImage(file='blabla.gif')
can.create_image(coord, pic)

Et là, patatra, ça marche pas.

Je vois bien ce qui cloche, mais je ne comprend pas pourquoi, et j'aurais voulu avoir la "technique" pour réaliser ce que je veux.

En gros, j'ai fen, une instance de Tk(), can, un canvas de fen dans App, je passe can en paramètre de ma class Carte et je traite la création de l'image dans ma class Carte et là, ça ne fait pas l'image alors qu'un create_line fonctionne par exemple, donc le problème vient bien du PhotoImage.
Je teste la création d'une image directement dans App et là aucun soucis, ça fonctionne.
Donc, je pense que le problème vient du fait que PhotoImage est appelée dans la class Carte, mais ça ne devrait pas poser de problème à mon sens étant donné que je passe can en paramètre de la class Carte...

Donc, si vous aviez une explication et une solution, ça serait tip top !!

Voici mon code dans les grandes lignes
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
 
from Tkinter import *
class Carte:
    def __init__(self, carte, couleur, etat, canvas):
        pic = PhotoImage(file='bitmaps/retourne.gif')
 
        x = 20
        y = 20
        canvas.create_image((x,y), image=pic)
 
class App:
    def __init__(self):
        fen = Tk()
        fen.title('Jeu de carte à la con')
        can = Canvas(fen)
        can.pack()
        RK = Carte('K', 'K', 1, can)
 
        #pic = PhotoImage(file='bitmaps/KK.gif')
        #can.create_image((20,20), image=pic)
 
        fen.mainloop()
 
test = App()
Voilà voilà , merci !