#!/usr/bin/env python3
# -*- coding: utf-8 -*-

import time
from tkinter import *

# on force la mise à jour de l'affichage des widgets dans le cas ici
# présent avec w.update_idletasks() (à utiliser avec parcimonie)
def compter ():
    # on désactive le bouton 'compter'
    bouton_compter.configure(state=DISABLED)
    # on efface la sortie console
    display.delete("1.0", END)
    # et on compte...
    for i in range(10):
        # petit message censé s'afficher PENDANT le comptage...
        display.insert(END, "valeur actuelle : {}\n".format(i))
        # on force la màj affichage des widgets
        fenetre.update_idletasks()
        # on marque une pause exprès...
        time.sleep(0.2)
    # end for
    # c'est fini
    # on réactive le bouton 'compter'
    bouton_compter.configure(state=NORMAL)
# end def

# on crée la fenêtre principale
fenetre = Tk()
fenetre.title("Test de freeze")
fenetre.resizable(width=False, height=False)

# on ajoute des widgets
display = Text(
    fenetre,
    bg="black",
    fg="pale green",
    font="monospace 12 bold",
    width=40,
    height=10,
)
display.pack(padx=5, pady=5)

# on ajoute un bouton 'compter'
bouton_compter = Button(fenetre, text="Compter...", command=compter)
bouton_compter.pack(side=LEFT, padx=10, pady=5)

# on ajoute un bouton 'quitter'
bouton_quitter = Button(fenetre, text="Quitter", command=fenetre.destroy)
bouton_quitter.pack(side=RIGHT, padx=5, pady=5)

# on lance la boucle principale
fenetre.mainloop()
