Skip to content

Note

Click here to download the full example code

Indeterminate progress bar#

Example of an indeterminate progress bar for a long running computation of unknown time.

progress indeterminate

Out:

<FunctionGui long_running(sleep_time=5)>


import time

from superqt.utils import thread_worker

from magicgui import magicgui
from magicgui.tqdm import tqdm


@magicgui(call_button=True, layout="horizontal")
def long_running(sleep_time=5):
    """Long running computation with an indeterminate progress bar."""
    # Here tqdm is not provided an iterable argument, or the 'total' kwarg
    # so it cannot calculate the expected number of iterations
    # which means it will create an indeterminate progress bar
    with tqdm() as pbar:
        # It is best practice to use a separate thread for long running computations
        # This makes the function non-blocking, you can still interact with the widget
        @thread_worker(connect={"finished": lambda: pbar.progressbar.hide()})
        def sleep(secs):
            time.sleep(secs)

        sleep(sleep_time)


long_running.show(run=True)

Total running time of the script: ( 0 minutes 0.050 seconds)

Download Python source code: progress_indeterminate.py

Download Jupyter notebook: progress_indeterminate.ipynb

Gallery generated by mkdocs-gallery