如何为Inkscape扩展程序创建进度条?

时间:2015-12-15 13:20:56

标签: python inkscape

我用Python编写的Inkscape扩展做了一些需要相当长时间的大量工作。如何添加进度条以显示当前处理数据的百分比和“取消”按钮?

1 个答案:

答案 0 :(得分:1)

创建一个在每次操作后调用的回调函数。

请考虑以下情形。想象一下do_work是工人职能的方法。创建一个函数fallback,在您需要状态更新的每个操作之后调用该函数。

def do_work(*args, **kwargs, fallback=None):

    while processing_some_condition:

        # You will need to find a way to get your total data value
        total_data = total_value

        """
            Do your processing call with *args & **kwargs
            ....
            ....
            ....
            ....
        """

        elapsed_data = some_value  # Get the remaining amount of data

        if elapsed_data == total_data:
            break

        if fallback:
            fallback(elapsed, total)

    return your_result

现在,问题是如何实现回退以显示进度条。这是一个解释https://gist.github.com/ab9-er/843d1af20049e72e2016

的要点

另一个简单的后备可能就像这个简单

def fallback(elapsed, total):
    tx_pc = lambda chunk, full: chunk * 100 / full
    print str(tx_pc(elapsed, total)) + "% operation completed"

    if tx_pc(elapsed, total) == 100:
        print "Operation complete: 100%"

希望这会有所帮助。如果没有,请告诉我。