Addition of wrapper for OneLineProgressMeter
This commit is contained in:
parent
b3307d7255
commit
6a7954b9a7
|
@ -10,10 +10,11 @@ from time import sleep
|
||||||
"""
|
"""
|
||||||
Demonstration of simple and multiple OneLineProgressMeter's as well as the Progress Meter Element
|
Demonstration of simple and multiple OneLineProgressMeter's as well as the Progress Meter Element
|
||||||
|
|
||||||
There are 3 demos
|
There are 4 demos
|
||||||
1. Manually updated progress bar
|
1. Manually updated progress bar
|
||||||
2. Custom progress bar built into your window, updated in a loop
|
2. Custom progress bar built into your window, updated in a loop
|
||||||
3. OneLineProgressMeters, nested meters showing how 2 can be run at the same time.
|
3. OneLineProgressMeters, nested meters showing how 2 can be run at the same time.
|
||||||
|
4. An "iterable" style progress meter - a wrapper for OneLineProgressMeters
|
||||||
|
|
||||||
If the software determined that a meter should be cancelled early,
|
If the software determined that a meter should be cancelled early,
|
||||||
calling OneLineProgresMeterCancel(key) will cancel the meter with the matching key
|
calling OneLineProgresMeterCancel(key) will cancel the meter with the matching key
|
||||||
|
@ -138,6 +139,64 @@ def custom_meter_example():
|
||||||
window.Close()
|
window.Close()
|
||||||
|
|
||||||
|
|
||||||
|
'''
|
||||||
|
A Wrapper for OneLineProgressMeter that combines your iterable with a progress meter into a single interface. For this you need 2 functions:
|
||||||
|
progess_bar
|
||||||
|
progress_bar_range
|
||||||
|
'''
|
||||||
|
|
||||||
|
|
||||||
|
def progress_bar(key, iterable, *args, title='', **kwargs):
|
||||||
|
"""
|
||||||
|
Takes your iterable and adds a progress meter onto it
|
||||||
|
:param key: Progress Meter key
|
||||||
|
:param iterable: your iterable
|
||||||
|
:param args: To be shown in one line progress meter
|
||||||
|
:param title: Title shown in meter window
|
||||||
|
:param kwargs: Other arguments to pass to OneLineProgressMeter
|
||||||
|
:return:
|
||||||
|
"""
|
||||||
|
sg.OneLineProgressMeter(title, 0, len(iterable), key, *args, **kwargs)
|
||||||
|
for i, val in enumerate(iterable):
|
||||||
|
yield val
|
||||||
|
if not sg.OneLineProgressMeter(title, i+1, len(iterable), key, *args, **kwargs):
|
||||||
|
break
|
||||||
|
|
||||||
|
|
||||||
|
def progress_bar_range(key, start, stop, step=1, *args, **kwargs):
|
||||||
|
"""
|
||||||
|
Acts like the range() function but with a progress meter built-into it
|
||||||
|
:param key: progess meter's key
|
||||||
|
:param start: low end of the range
|
||||||
|
:param stop: Uppder end of range
|
||||||
|
:param step:
|
||||||
|
:param args:
|
||||||
|
:param kwargs:
|
||||||
|
:return:
|
||||||
|
"""
|
||||||
|
return progress_bar(key, range(start, stop, step), *args, **kwargs)
|
||||||
|
|
||||||
|
|
||||||
|
# -------------------- Demo Usage --------------------
|
||||||
|
def demo_iterable_progress_bar():
|
||||||
|
my_list = list(range(1000)) # start with a list of 100 integers as the user's list
|
||||||
|
|
||||||
|
# first form takes an iterable and a key and will return a value from your iterable
|
||||||
|
# and bump the progress meter at the same time
|
||||||
|
for value in progress_bar('bar1', my_list):
|
||||||
|
# do something useful with value, a value from your list.
|
||||||
|
print(value)
|
||||||
|
|
||||||
|
# Since the progress_bar is an iterator, you can use it within a list comprehension
|
||||||
|
my_list = [x for x in progress_bar('bar1', my_list)]
|
||||||
|
|
||||||
|
# The second form will act like a range function and provide a set of integers while also
|
||||||
|
# incrementing a progress meter
|
||||||
|
for i in progress_bar_range('bar2', 1000, 2000, title='Range progress bar'):
|
||||||
|
# do something with i
|
||||||
|
print(i)
|
||||||
|
|
||||||
|
demo_iterable_progress_bar()
|
||||||
manually_updated_meter_test()
|
manually_updated_meter_test()
|
||||||
custom_meter_example()
|
custom_meter_example()
|
||||||
demo_one_line_progress_meter()
|
demo_one_line_progress_meter()
|
Loading…
Reference in New Issue