Bonjour.

Poursuivant mon appli "Lancer de dés", je tâche de faire une boucle d'affichage des dés dans un canvas.
Le but est d'afficher n dés de valeur choisie au hasard, alignés en diagonale sur l'écran. Voici la fonction qui réalise cette tâche (je fais d'abord un test avec n=3 dés à lancer) :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
 
def hasard(self):
        for i in range(3) :
            self.image=PhotoImage(file=self.faces[randrange(1,7,1)-1]) #choisit l'image du dé dans la liste des 6 faces)
            self.canvas.create_image(45*(i+1), 45*(i+1), image = self.image) #insère l'image dans le canvas
L'ennui, c'est que je n'obtiens que le 3ème dé en bas à droite : il semblerait que l'image du dé n-1 disparaisse à l'apparition du dé n .

Qu'en pensez-vous, svp ?
Je joins l'intégralité de la classe pour que les bonnes âmes puissent joujouter avec...
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
 
#_*_ coding: iso-8859-1 _*_
 
from Tkinter import*
from random import randrange
 
class ApplicationDes(Tk) :
    #constructeur
    def __init__(self,parent):
        Tk.__init__(self,parent)
        self.parent=parent
        self.faces=['1.gif', '2.gif', '3.gif', '4.gif', '5.gif', '6.gif']
        self.initialize()
 
    #fonction qui modifie le texte de bouton en fonction de la valeur du curseur
    def affiche(self,valeur):
        self.bouton.config(text ="Lancez "+str(valeur)+" dés !")
 
    #fonction affiche 1 dé au hasard
    def hasard(self):
        for i in range(3) :
            self.image=PhotoImage(file=self.faces[randrange(1,7,1)-1])
            self.canvas.create_image(45*(i+1), 45*(i+1), image = self.image)
 
 
    #initialisation des widget
    def initialize(self) :
        self.grid()
        #le curseur pour le nombre de dés
        self.curseur=Scale(self, length=500, from_=1, to=20, orient=HORIZONTAL, label ='Nombre de dés à lancer',troughcolor ='dark grey',
                    sliderlength =20, tickinterval =1,command=self.affiche)
        self.curseur.grid(column=0,row=0,sticky='EW')
        #le bouton pour lancer les dés
        self.bouton=Button(self,text="Lancez les dés !",command=self.hasard)
        self.bouton.grid(column=0,row=1)
        #la fenêtre dans laquelle vont s'afficher les dés
        self.canvas=Canvas(self,width="200",height="200")
        self.canvas.grid(column=0,row=2)
        #auto redimensionnement de la fenêtre
        self.resizable(True,True)
 
 
#création d'une application
if __name__=="__main__":
    app = ApplicationDes(None)
    app.title("Les dés sont jetés !")
    app.mainloop()
Merci d'avance !

Gram'