2010-06-09 57 views
0

我正在嘗試使用進度條顯示腳本的進度。我希望在一個類的每個函數被執行之後它會增加進度。我試過的代碼如下:如何獲得進度條到時間Class exectution

import progressbar 
from time import sleep 

class hello(): 
    def no(self): 
     print 'hello!' 

    def yes(self): 
     print 'No!!!!!!' 


def pro(): 
    bar = progressbar.ProgressBar(widgets=[progressbar.Bar('=', '[', ']'), ' ', progressbar.Percentage()]) 

    for i in Yep(): 
     bar.update(Yep.i()) 
     sleep(0.1) 
    bar.finish() 

if __name__ == "__main__": 
    Yep = hello() 
    pro() 

有沒有人知道如何得到這個工作。謝謝

回答

2

這是做你想做的?

import progressbar 
from time import sleep 

class hello(): 
    def no(self): 
     print 'hello!' 

    def yes(self): 
     print 'No!!!!!!' 

    def __call__(self) : 
     methods = [self.no, self.yes] 
     return [ (x[0]*100/len(methods), x[1]) for x in enumerate(methods) ] 

def pro(): 
    bar = progressbar.ProgressBar(widgets=[progressbar.Bar('=', '[', ']'), ' ', progressbar.Percentage()]) 

    for percent, method in Yep(): 
     bar.update(percent) 
     method() 
     sleep(0.1) 
    bar.finish() 

if __name__ == "__main__": 
    Yep = hello() 
    pro() 

可能的改進:發現方法,通過他們的名字來稱呼(例如用progress_前綴他們)

+0

這項工作的完美。謝謝你的幫助。 – chrissygormley 2010-06-09 10:15:22

+0

不客氣! – yanjost 2010-06-09 14:24:36