Tkinter: ProgressBar à durée indéterminée

J'aimerais implémenter une barre de progression dans Tkinter qui remplit les conditions suivantes:

  • La barre de progression est le seul élément à l'intérieur de la fenêtre principale
  • Il peut être lancé par une commande de démarrage sans avoir besoin d'appuyer sur un bouton
  • Il est en mesure d'attendre jusqu'à ce qu'une tâche avec une durée inconnue est fini
  • L'indicateur de la barre de progression continue de bouger tant que la tâche n'est pas terminée
  • Il peut être fermé par une commande d'arrêt sans avoir besoin d'appuyer sur n'importe quel arrêt de la barre de

Jusqu'à présent, j'ai le code suivant:

import Tkinter
import ttk
import time

def task(root):
    root.mainloop()

root = Tkinter.Tk()
ft = ttk.Frame()
ft.pack(expand=True, fill=Tkinter.BOTH, side=Tkinter.TOP)
pb_hD = ttk.Progressbar(ft, orient='horizontal', mode='indeterminate')
pb_hD.pack(expand=True, fill=Tkinter.BOTH, side=Tkinter.TOP)
pb_hD.start(50)
root.after(0,task(root))
time.sleep(5) # to be replaced by process of unknown duration
root.destroy()

Ici, le problème est que la barre de progression ne s'arrête pas après le 5s.

Quelqu'un pourrait-il m'aider à trouver l'erreur?

OriginalL'auteur Rickson | 2014-08-08