Problème CANVAS
FerméPhil_1857 Messages postés 1872 Date d'inscription lundi 23 mars 2020 Statut Membre Dernière intervention 28 février 2024 - 30 août 2022 à 10:27
- Erreur d'enregistrement canva
- Erreur 0x80070643 - Accueil - Windows
- Canva pour pc - Télécharger - Divers Photo & Graphisme
- Erreur 0x80070643 Windows 10 : comment résoudre le problème de la mise à jour KB5001716 - Accueil - Windows
- Canva générateur d'image - Accueil - Outils
- Erreur 1001 outlook - Accueil - Bureautique
6 réponses
25 août 2022 à 18:02
bonjour,
tu pourrais ajouter dans ta boucle:
master.update()
Modifié le 25 août 2022 à 19:57
Bonjour,
Et tu peux enlever ceci:
return(x,y)
et écrire simplement:
EVOL(x,y)
car x et y ne sont pas modifiés dans la fonction, ca donnerait ça:
from tkinter import * import os,sys,time def evolution(x,y): w_col = "black"; w_cote = 10 canevas1.create_rectangle(x,y,x+w_cote,y+w_cote,fill = w_col,outline = w_col) time.sleep(1) master = Tk() master.title("test") master.state("zoomed") canevas1 = Canvas(master) canevas1.pack(fill=BOTH, expand=True) w_col = "white"; w_cote = 1500; xx = 20; yy = 20 canevas1.create_rectangle(xx,yy,xx+w_cote,yy+800,fill=w_col,outline = w_col) x,y = 70, 70 ind=0 while ind <10: evolution(x,y) x+=20 y+= 30 ind+=1 master.update() master.mainloop()
26 août 2022 à 09:53
on peut même simplifier encore en supprimant la variable ind:
x,y = 70, 70 for k in range(10): evolution(x,y) x+=20 y+= 30 master.update()
27 août 2022 à 12:06
Bonjour,
Si ton problème est résolu, tu peux le marquer "Résolu" ...
Bonjour, ce n'est pas comme cela que l'on procède avec tkinter. Cette bibliothèque fournit une méthode pour faire cela: after.
En conséquence, il ne faut pas utiliser de time.sleep mais bien cette méthode after.
On transforme donc la fonction EVOL:
def evol(x, y, i=0, maxi=10): w_col = "black" w_cote = 10 canevas1.create_rectangle(x, y ,x + w_cote, y + w_cote, fill=w_col, outline=w_col) # dessin cellules if i < maxi: canevas1.after(1000, evol, x + 20, y + 30, i + 1, maxi)
Puis on supprime cette horrible boucle while et on appelle alors cette fonction.
# Code ECRAN_BLANC() x = 70 y = 70 evol(x, y) master.mainloop()
Et voilà, bonne continuation.
Modifié le 28 août 2022 à 11:11
Inutile d'avoir i et maxi:
def evol(x, y, n=8): w_col = "black" w_cote = 10 canevas1.create_rectangle(x, y ,x + w_cote, y + w_cote, fill=w_col, outline=w_col) # dessin cellules if n > 0: canevas1.after(1000, evol, x + 20, y + 30, n-1)
Modifié le 29 août 2022 à 22:13
Merci regglyss de m'avoir fait découvrir after()!
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question28 août 2022 à 15:38
Si seulement Bertrand4304 pouvait nous répondre ....
30 août 2022 à 10:27
Bonjour Bertrand,
Alors, ca te va ou pas ?