這篇文章主要介紹了Python實現方便使用的級聯進度信息,實例分析了Python顯示級聯進度信息的相關技巧,非常具有實用價值,需要的朋友可以參考下
本文實例講述了Python實現方便使用的級聯進度信息的方法。分享給大家供大家參考。具體實現方法如下:
?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 class StepedProgress: '''方便顯示進度的級聯進度信息。 ''' def __init__(self, stockPercent=[1], parentProgress=None): self.percent = 0 self.info = '' self.subProgress = [] self.cur_running_process = 0 self.stockPercent = stockPercent self.parentProgress = parentProgress # 重新計算進度比,防止初始化時的值加起來不是1 w = 0.0 for p in self.stockPercent: w += p for i in range(0, len(stockPercent)): stockPercent[i] = stockPercent[i]/w # 初始化子進度 if len(stockPercent) == 1: self.subProgress = None else: for p in self.stockPercent: self.subProgress.append(StepedProgress(parentProgress=self)) def subprogress(self, index): if index >= self.subcount(): return self.subProgress[self.subcount()-1] elif index < self.cur_running_process: return self.subProgress[self.cur_running_process] else: self.cur_running_process = index return self.subProgress[index] def subcount(self): return len(self.subProgress) def notifyParentProgress(self, percent, info=None): new_percent = 0.0 for i in range(0, self.cur_running_process): new_percent += self.stockPercent[i] new_percent += percent/100.0 * self.stockPercent[self.cur_running_process] new_percent *= 100.0 self.notifyProgress(new_percent, info) def notifyProgress(self, percent, info=None): if percent > self.percent: self.percent = percent if info is not None: self.info = info if self.parentProgress is not None: self.parentProgress.notifyParentProgress(percent, info) else: print self.info[:77].ljust(80, '.'), "[%0.1f%%]"%self.percent if __name__ == "__main__": s = StepedProgress([60, 40]) s.notifyProgress(10, 'aaa') s1 = s.subprogress(0) s1.notifyProgress(50, 'bbb') s3 = s.subprogress(1) s3 = StepedProgress([1, 1], parentProgress=s3.parentProgress) #級聯子進度 s3.notifyProgress(20, 'ddd') s4 = s3.subprogress(0) s4.notifyProgress(50, 'eee') s5 = s3.subprogress(1) s5.notifyProgress(50, 'fff')輸出結果:
aaa............................................................................. [10.0%]
bbb............................................................................. [30.0%]
ddd............................................................................. [68.0%]
eee............................................................................. [70.0%]
fff............................................................................. [90.0%]
希望本文所述對大家的Python程序設計有所幫助。