Home > python, Tkinter > Tkinter: progressbar

Tkinter: progressbar

7 Aprile 2014
import ttk
import time

class ProgressBar(object):
    def __init__(self, master=None):
        self.var = 0
        if master is None:
            self.root = tk.Tk()
        else:
            self.root = master
        self.root.title('wait...')

    def build_gui(self):
        self.frame = tk.Frame(self.root)  
        self.frame.pack()  
        self.pb = ttk.Progressbar(self.frame, mode="determinate",
                                  variable=self.var)
        self.pb.pack()

    def start(self):
        self.root.mainloop()  

class Controller(object):
    def __init__(self):
#        self.app = ProgressBar(master=tk.Toplevel()) # CoreFrame as parent
        self.app = ProgressBar(master=None) # progress bar on the fly
        self.app.build_gui()

    ## Do stuff ##

    def call_progressbar(self, newlimit=100):
        '''Call progressbar using newlimit as maximum argument'''
        self.app.pb.configure(maximum=newlimit)
        for i in range(newlimit):
            time.sleep(.005)
            self.app.pb.step()
            self.app.pb.update()
        self.app.pb.stop()
        self.app.root.destroy()

    def run(self):
        self.app.start()

if __name__ == '__main__':
    c = Controller()
    c.call_progressbar(200)
    c.run() # Only if master is None and we need a mainloop
    


Categorie:python, Tkinter Tag:
I commenti sono chiusi.