Problème CANVAS
Phil_1857 Messages postés 1956 Statut Membre -
Bonjour à tous
Ci-joint un petit script dans lequel je souhaite afficher les rectangles à chaque création et non globalement. Qu'y a-t-il à corriger?
Merci d'avance pour vos conseils.
Cordialement
Bertrand
Nom supprimé Modération CCM
from tkinter import *
import os,sys,time
########################################################################################################
def ECRAN_BLANC():
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) # dessin écran blanc
def EVOL(x,y):
xx = x ; yy = y ; w_col = "black"; w_cote = 10
canevas1.create_rectangle(xx,yy,xx+w_cote,yy+w_cote,fill=w_col,outline = w_col) # dessin cellules en boucle
time.sleep(1)
return(x,y)
########################################################################################################
master = Tk()
master.state ("zoomed")
master.title("Que faut-il faire pour voir l'évolution des cellules et non l'affichage final ?")
canevas1 = Canvas(master)
canevas1.pack(fill=BOTH, expand=True)
########################################################################################################
ECRAN_BLANC()
x = 70
y = 70
ind=1
while ind <10:
x,y=EVOL(x,y)
x+=20
y+= 30
ind+=1
master.mainloop()
Windows / Firefox 104.0
- Erreur d'enregistrement canva
- Canva download - Télécharger - Divers Photo & Graphisme
- Enregistrement mp3 gratuit - Télécharger - Streaming audio
- Enregistrement - Guide
- Telecharger studio d'enregistrement rap - Télécharger - Édition & Montage
- Comment couper un enregistrement audio - Guide
6 réponses
bonjour,
tu pourrais ajouter dans ta boucle:
master.update()
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()
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.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question