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

from tkinter import *

# la fonction délègue le comptage à une boucle tkinter
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...
    boucle_tkinter(0, 10)
# end def

def boucle_tkinter (debut, fin):
    # petit message censé s'afficher PENDANT le comptage...
    display.insert(END, "valeur actuelle : {}\n".format(debut))
    # màj données
    debut += 1
    # on étale dans le temps avec w.after()
    if debut < fin:
        # on marque une pause exprès...
        fenetre.after(200, boucle_tkinter, debut, fin)
    # c'est fini
    else:
        # on réactive le bouton 'compter'
        bouton_compter.configure(state=NORMAL)
    # end if
# 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()
