如何为 Inkscape 扩展制作进度条?
How can I make a progress bar for Inkscape extension?
我用 Python 编写的 Inkscape 扩展做了一些需要相当长时间的大量工作。如何添加进度条以显示当前已处理数据的百分比和 "Cancel" 按钮?
创建一个在每次操作后调用的回调函数。
考虑以下场景。想象一下 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 扩展做了一些需要相当长时间的大量工作。如何添加进度条以显示当前已处理数据的百分比和 "Cancel" 按钮?
创建一个在每次操作后调用的回调函数。
考虑以下场景。想象一下 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%"
希望这对您有所帮助。如果没有,请告诉我。