Closed. This question is off-topic。它当前不接受答案。
                            
                        
                    
                
                            
                                
                
                        
                            
                        
                    
                        
                            想改善这个问题吗? Update the question,所以它是on-topic,用于堆栈溢出。
                        
                        4年前关闭。
                                                                                            
                
        
我用Python编写的Inkscape扩展程序完成了一些耗时较长的大量工作。如何添加进度条以显示当前已处理数据的百分比和“取消”按钮?

最佳答案

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

请考虑以下情形。想象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%"


希望这可以帮助。让我知道是否可以。

关于python - 如何制作Inkscape扩展程序的进度栏? ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34290376/

10-13 00:04
查看更多