Bonjour,

La fonction suivante met à jour mon interface graphique :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
def majgraphique(canvas,plateau):
    for i in range(8):
        for j in range(8):
            if plateau[j][i]!=0:
                if plateau[j][i]==1:
                    couleur = "black"
                else:
                    couleur = "white"
                canvas.create_oval(80*i+2,80*j+2,80*i+78,80*j+78,fill=couleur)

Elle est appelée par la fonction click après jouer_coup (coup de l'humain) et coup_aleatoire (coup de l'ordinateur).
Je voudrais :
- coup humain
- mise à jour graphique
- une ou deux secondes de pause
- coup d' ordi
- mise à jour graphisme

Quand je rajoute un time.sleep(2) APRES l'appel de majgraphique dans mon programme, la pause s'effectue en réalité avant la mise à jour, et les deux mises à jour humain et ordinateur s'effectuent en suivant et je n'ai pas le temps de voir le coup de l'humain.
J'ai essayé de glisser mon time.sleep(2) à plusieurs endroits, mais j'ai toujours le même problème. Mon programme pause 2 secondes, puis les deux coups s'affichent en suivant (simultanément en apparence).
J'ai essayé de remplacer le sleep par un while portant sur time.time(), mais cela revient au même.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
def click(event):
    global joueur
    x,y = event.x//80,event.y//80
    if est_possible(joueur,x,y):
        jouer_coup(joueur,x,y)
        majgraphique(canvas,plateau)
        # je rajoute ici le time.sleep(2) mais le graphisme n'est pas actualisé avant la pause.
        joueur = 3 - joueur
        coup_aleatoire(joueur)
        majgraphique(canvas,plateau)
        joueur = 3 - joueur
Quelqu'un pourrait-il m'expliquer pourquoi mon code ne fonctionne pas comme espéré et me proposer une solution ?
Merci d'avance.