2015-09-05 49 views
0

我正在嘗試使用progressive python進度條來創建兩個堆疊式進度條。它應該看起來像不同長度的多個python漸進式進度條

Articles[#######   ] 
Links [############] 

所以,如果你注意到,兩個進度欄是不同的長度。我在下面有一些代碼創建了兩個相同長度的進度條。我想知道是否有人可以告訴我如何調整,以便我可以允許每個進度條的大小不同。

這是我開發的測試代碼。

from time import sleep 

from blessings import Terminal 

from progressive.bar import Bar 
from progressive.tree import ProgressTree, Value, BarDescriptor 


def progbar(_outer, _inner): 

    leaf_values = [Value(0) for i in range(2)] 

    test_d = { 
    'Link pages scraped': BarDescriptor(value=leaf_values[0], 
             type=Bar, max_value = _outer), 
    'Articles collected': BarDescriptor(value = leaf_values[1], 
              type=Bar, max_value= _inner) 
    } 

    def incr_value(obj, _counter_outer, _counter_inner): 
     if _counter_inner < _outer: 
      leaf_values[0].value += 1 
     if _counter_outer < _inner: 
      leaf_values[1].value += 1 


    def are_we_done(obj): 
     if _counter_inner == _outer and _counter_outer == _inner: 
      return(True) 
     else: 
      return(False) 


# Create blessings.Terminal instance 
t = Terminal() 
# Initialize a ProgressTree instance 
n = ProgressTree(term=t) 
# We'll use the make_room method to make sure the terminal 
# is filled out with all the room we need 
n.make_room(test_d) 

_counter_inner = 0 
_counter_outer = 0 
while not are_we_done(test_d): 
    sleep(2) 
    n.cursor.restore() 
    # We use our incr_value method to bump the fake numbers 
    incr_value(test_d,_counter_outer, _counter_inner) 
    # Actually draw out the bars 
    n.draw(test_d) 
    _counter_inner += 1 
    _counter_outer += 1 


if __name__ == '__main__': 

    progbar(100, 20)        

回答

1

好吧,首先我假設壓痕問題是從複製和粘貼

,使其在不同勢的大小,你需要更改線路

test_d = { 
'Link pages scraped': BarDescriptor(value=leaf_values[0], 
            type=Bar, max_value = _outer), 
'Articles collected': BarDescriptor(value = leaf_values[1], 
             type=Bar, max_value= _inner) 
} 

到:

test_d = { 
'Link pages scraped': BarDescriptor(value=leaf_values[0], 
            type=Bar, kwargs=dict(max_value = _outer,width="50%")), 
'Articles collected': BarDescriptor(value = leaf_values[1], 
             type=Bar, kwargs=dict(max_value= _inner,width="10%")) 
} 

請注意,我將kwargs作爲正常字典調用BarDescriptor,而不是**。這就是他們如何使用它在這exapmle:https://github.com/hfaran/progressive/blob/master/progressive/examples.py 和它似乎工作(在kwargs參數被用來調用酒吧類)

你可能想改變10%

和50%的東西沒有硬編碼。 %表示終端寬度的百分比。你也可以做「20c」女巫意味着它的寬度將是20個字符

+0

啊,謝謝你的幫助。是的,我試圖閱讀源代碼,但無法理清kwargs片。再次感謝。 – krishnab