Tkinter: ProgressBar with indeterminate duration Tkinter: ProgressBar with indeterminate duration tkinter tkinter

Tkinter: ProgressBar with indeterminate duration


Once the mainloop is active, the script wont move to the next line until the root is destroyed.There could be other ways to do this, but I would prefer doing it using threads.

Something like this,

import Tkinterimport ttkimport timeimport threading#Define your Progress Bar function, def task(root):    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.mainloop()# Define the process of unknown duration with root as one of the input And once done, add root.quit() at the end.def process_of_unknown_duration(root):    time.sleep(5)    print 'Done'    root.destroy()# Now define our Main Functions, which will first define root, then call for call for "task(root)" --- that's your progressbar, and then call for thread1 simultaneously which will  execute your process_of_unknown_duration and at the end destroy/quit the root.def Main():    root = Tkinter.Tk()    t1=threading.Thread(target=process_of_unknown_duration, args=(root,))    t1.start()    task(root)  # This will block while the mainloop runs    t1.join()#Now just run the functions by calling our Main() function,if __name__ == '__main__':    Main()

Let me know if that helps.