Forum Python

Please or S’enregistrer to create posts and topics.

temporisation d'affichage

Bonjour, 

je voudrais ajouter une temporisation d'affichage dans une boucle : je fais tourner une boucle qui affiche un point aléatoirement choisi, et je voudrais voir chaque point s'afficher successivement, juste après sa création.  Pour l'instant, je vois l'affichage complet en tous les points en en fin de boucle, en une seule fois. Comment faire?

Merci

dominator a réagi à ce message.
dominator

Bonjour,

Pardon pour le retard !

Vous n'avez pas donner le code pour l'examiner! Mais quand même je peut vous répondre du moment qu'il s'agit d'un problème classique lié à la bibliothèque Tkinter qui ne rafraîchit pas l'affichage pendant l'exécution d'une boucle. Voici une solution qui marche bien que j'ai testé :

import tkinter as tk
import random

def afficher_point(i=0):
    if i < 100:
        x = random.randint(0, 400)
        y = random.randint(0, 400)
        canvas.create_oval(x-2, y-2, x+2, y+2, fill='black')
        root.after(50, afficher_point, i+1)  # 50ms de délai

root = tk.Tk()
canvas = tk.Canvas(root, width=400, height=400)
canvas.pack()
afficher_point()
root.mainloop()

Si vous rencontrez des problèmes n'hésitez pas à les poser ici! Bonne chance!