网络编程
位置:首页>> 网络编程>> Python编程>> Python实现方便使用的级联进度信息实例

Python实现方便使用的级联进度信息实例

作者:鸪斑兔  发布时间:2021-04-22 12:31:18 

标签:Python,级联,进度

本文实例讲述了Python实现方便使用的级联进度信息的方法。分享给大家供大家参考。具体实现方法如下:


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程序设计有所帮助。

0
投稿

猜你喜欢

手机版 网络编程 asp之家 www.aspxhome.com