0

progressivePython プログレスバーを使用して、2 つの積み重ねられたプログレスバーを作成しようとしています。次のように見えるはずです

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

お気付きのように、2 つのプログレス バーの長さが異なります。以下に、同じ長さの 2 つのプログレス バーを作成するコードをいくつか示します。各プログレスバーを異なるサイズにできるように、誰かがこれを調整する方法を教えてくれるかどうか疑問に思っていました.

これが私が開発したテストコードです。

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)                             
4

1 に答える 1

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%"))
}

**ではなく、通常のdictとしてkwargsを使用してBarDescriptorを呼び出すことに注意してください。それがこの例での使用方法です: https://github.com/hfaran/progressive/blob/master/progressive/examples.py そしてそれはうまくいくようです (kwargs のパラメーターは Bar クラスを呼び出すために使用されます)

おそらく、10% と 50% をハードコードされていないものに変更したいと思うでしょう。% は端末幅のパーセンテージを意味します。「20c」魔女もできます。これは、幅が20文字になることを意味します

于 2015-09-05T10:02:38.260 に答える