本文实例讲述了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程序设计有所帮助。