Bonjour,

j'essaie de coder un jeu de carte (la manille) en Tkinter.
Je me prend la tete depuis un bon moment sur l'affichage d'une image :
voila mon programme, qui pour l'instant ne fait pas grand chose mais est censé afficher une image dans le canvas :
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
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
# -*- coding: cp1252 -*-
from Tkinter import *
from random import *
 
couleurs=['pique','carreau','coeur','trefle']
nombres=[7,8,9,11,12,13,1,10]
points={10:5,13:3,12:2,11:1,1:4,7:0,8:0,9:0}
 
class Jeu:
    def __init__(self):
        self.fen=Tk()
        self.can=Canvas(self.fen,height=600,width=800)
        self.can.pack()
        Button(self.fen,text="quitter",command=self.fen.quit).pack()
        self.joueur=Joueur([])
        self.joueur1=Joueur_IA([],'gauche')
        self.joueur2=Joueur_IA([],'droite')
        self.joueur3=Joueur_ami([])
        self.partie()
        ###test###
        a=Carte("images/1coeur.GIF","")
        a.afficher(self.can)
        ###fin###
        self.fen.mainloop()
        self.fen.destroy()
    def partie(self):
        self.jeu=[]
        for i in nombres:
            for j in couleurs:
                self.jeu.append((i,j))
        self.distribuer()
    def distribuer(self):
        for i in range(8):
            a=self.jeu[randrange(len(self.jeu))]###element au hasard dans self.jeu
            carte=Carte(str(a[0])+a[1],a[0])###creation d'une instance de Carte
            self.joueur.jeu.append(carte)###on ajoute cette instance au jeu d'un joueur
            self.jeu.remove(a)
 
            a=self.jeu[randrange(len(self.jeu))]
            carte=Carte(str(a[0])+a[1],a[0])
            self.joueur1.jeu.append(carte)
            self.jeu.remove(a)
 
            a=self.jeu[randrange(len(self.jeu))]
            carte=Carte(str(a[0])+a[1],a[0])
            self.joueur2.jeu.append(carte)
            self.jeu.remove(a)
 
            a=self.jeu[randrange(len(self.jeu))]
            carte=Carte(str(a[0])+a[1],a[0])
            self.joueur3.jeu.append(carte)
            self.jeu.remove(a)
 
class Carte:
    def __init__(self,chemin,val):
        self.chemin=chemin
        self.val=val
    def afficher(self,can):
        a=PhotoImage(file=self.chemin)
        can.create_image(0,0,image=a)
 
class Joueur:
    def __init__(self,jeu):
        self.jeu=jeu
 
class Joueur_IA:
    def __init__(self,jeu,cote):
        self.jeu=jeu
        self.cote=cote
 
class Joueur_ami:
    def __init__(self,jeu):
        self.jeu=jeu
a=Jeu()
jai fait un petit test qui marche a peu près (il m'affiche bien un rectangle blanc au bon endroit mais les motifs de l'image n'apparaissent pas):
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
from Tkinter import *
 
fen=Tk()
can=Canvas(fen,height=600,width=800)
can.pack()
a=PhotoImage(file="1coeur.GIF")
can.create_image(0,0,image=a)
fen.mainloop()
Si quelqu'un pouvait m'expliquer pourquoi dans un cas mon image ne s'affiche pas et dans l'autre elle s'affiche mal ?
Merci d'avance et désolé pour ce paquet de code