Bonsoir à tous, j'ai actuellement un petit souci avec l'utilisation de la fonction time.sleep()
Je programme un jeu de billard (ce n'est pas mon programme complet, juste un extrait modifié pour mettre en évidence mon probleme) et ce programme "devrait" faire bouger la boule sur le Canvas. Le seul souci se situe dans la boucle
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
def tirer():
    p = 10
    a = 45
    for i in range(0,p):
        global blanche,x0,y0
        canevas.delete(blanche)
        time.sleep(0.1)
        x0 = x0 + 20
        y0 = y0 + 20
        blanche = canevas.create_oval(x0-12,y0-12,x0+12,y0+12, fill='white')
En effet Python semble attendre avant et non à chaque incrémentation dans la boucle, alors que j'ai placé cette fonction time.sleep() pour que la trajectoire de la balle soit visible, et non qu'elle se "téléporte"
Le plus simple est de copier-coller le code ci-dessous si vous ne comprenez pas ce que je veux dire
Merci d'avance pour toute réponse concernant la fonction time.sleep() ou pour une alternative

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
from tkinter import *
import time
 
 
fen = Tk()
fen.geometry("%dx%d%+d%+d" % (1260,940,1,1))
fen['bg']="#92afac"
fen.title("Jeu du Billard")
 
canevas = Canvas(fen, width =990, height =522, bg ='#92afac', borderwidth=0)
canevas.grid(row=2, column=0, columnspan=4, pady=90, padx=130, sticky='sw')
 
x0=12
y0=12
blanche = canevas.create_oval(x0-12,y0-12,x0+12,y0+12, fill='white')
 
 
def tirer():
    p = 10
    a = 45
    for i in range(0,p):
        global blanche,x0,y0
        canevas.delete(blanche)
        time.sleep(0.1)
        x0 = x0 + 20
        y0 = y0 + 20
        blanche = canevas.create_oval(x0-12,y0-12,x0+12,y0+12, fill='white')
 
 
 
faire_tir = Button(fen, text=" Tirer la blanche ! ", command=tirer)
faire_tir.grid()
 
fen.mainloop()