Ga naar hoofdinhoud

Voortgangsbalken in Python: een complete gids met voorbeelden

Leer hoe je Python-voortgangsbalken maakt met tqdm, progressbar2, alive-progress en Tkinter, plus best practices voor betere UX en app-prestaties.
· 13 min lezen

Verken met AI

In moderne apps willen gebruikers direct feedback, zeker wanneer taken lang duren. Python-voortgangsbalken zijn een duidelijke en eenvoudige manier om te laten zien dat er iets op de achtergrond gebeurt. Een goede voortgangsbalk laat een programma sneller aanvoelen, oogt professioneler en verbetert de gebruiksvriendelijkheid. 

In dit artikel leer je hoe je Python-voortgangsbalken implementeert met populaire libraries als tqdm, progress, progressbar2, alive-progress en Tkinter, plus best practices om de gebruikerservaring en de prestaties van je applicatie te verbeteren.

Wil je Python-concepten hands-on leren? Bekijk dan onze Python Programming Fundamentals skill track. 

TL;DR

  • Voor commandlinetools is tqdm de standaardkeuze — lichtgewicht en het werkt goed met pandas. Gebruik progress voor simpele scripts, progressbar2 wanneer je aangepaste lay-outs nodig hebt, of alive-progress voor geanimeerde visuals.

  • Voor desktop-apps ondersteunt Tkinter’s ingebouwde ttk.Progressbar zowel taken met bekende duur (determinate) als open-einde-taken (indeterminate).

  • Beperk updates in snelle lussen om vertraging te voorkomen, en combineer visuals met tekst zoals percentages of aantallen zodat de balk voor iedereen nuttig blijft.

Wat zijn voortgangsbalken in Python?

Voortgangsbalken zijn overal. Ze worden vaak gebruikt bij bestandsdownloads, software-installaties en ETL-pijplijnen. Ze zijn ook handig om de voortgang van het trainen van machinelearningmodellen te volgen.

De voortgangsbalk laat zien hoeveel van een taak voltooid is en hoeveel er nog resteert. Hij kan verschijnen als tekst in een commandline-interface (CLI) of als een visuele balk in een grafische gebruikersinterface (GUI).

Voortgangsbalken verbeteren de gebruikerservaring. Ze geven real-time updates en laten gebruikers hun voortgang in het proces zien. Als er vertraging optreedt, kunnen gebruikers beslissen of ze willen ingrijpen of wachten. Deze zichtbaarheid vermindert frustratie en laat wachttijden korter lijken. Gebruikers staren niet naar een stilstaand scherm, afvragend of er iets gebeurt; ze blijven betrokken en voelen zich gerustgesteld dat er vooruitgang is.

Ontwikkelaars gebruiken voortgangsbalken om de prestaties van applicaties te volgen. Ze helpen knelpunten te identificeren, code te benchmarken en de duur van taken te meten. Voortgangsbalken in scripts en workflows tonen duidelijke statusupdates. Ze helpen gebruikers langlopende processen beter te begrijpen. Ze verbeteren ook de bruikbaarheid van interactieve tools en notebooks.

Voortgangsbalken kunnen ook dienen als een eenvoudige vorm van performancemonitoring. Ze tonen hoe lang elke taak duurt. Dit helpt ontwikkelaars trage stappen op te sporen en efficiëntie te meten. Zo kun je verschillende implementaties gemakkelijk vergelijken. 

Voortgangsbalken op de commandline

Commandline-voortgangsbalken geven visuele feedback voor langlopende taken direct in de terminal, waardoor scripts informatiever en gebruiksvriendelijker worden. Python biedt meerdere libraries, elk met sterke punten in snelheid, aanpasbaarheid en visuele stijl. We bekijken er vier: tqdm, progress, progressbar2 en alive-progress. 

Tqdm: de standaard voor snelheid en eenvoud

tqdm is een populaire Python-library voor het maken van voortgangsbalken. Het biedt snelle en veelzijdige voortgangsindicatoren voor lussen en iterables. Het houdt iteraties bij en berekent zowel resterende tijd als verstreken tijd. Deze informatie werkt de balk real-time bij. tqdm werkt op de achtergrond. Het voorspelt hoeveel tijd er nog resteert en slaat onnodige updates over. Het is eenvoudig te leren, gebruikt weinig geheugen en wordt ondersteund door een sterke community. 

Installatie

Een makkelijke manier om tqdm te installeren is met de pip-installer. Voer de volgende opdracht uit in de terminal.

pip install tqdm

Print het versienummer om te controleren of de library correct is geïnstalleerd.

import tqdm
print(tqdm.__version__)

4.67.1

Basisgebruik van tqdm

tqdm is eenvoudig te gebruiken. Importeer de library. Wikkel elke iterable in met tqdm(iterable) om een voortgangsbalk te tonen.

In plaats van tqdm(range(n)) kun je voor het gemak de verkorte trange(n) gebruiken.

from tqdm import trange
import time

for _ in trange(100, desc="Processing"):
    # Do stuff here
    time.sleep(0.05)  # simulate a task

Deze code toont tijdens het uitvoeren een live voortgangsbalk.

De voortgangsbalk laat het volgende zien

  • Voltooid percentage (22%)
  • Aantal voltooide iteraties van het totaal (224/1000)
  • Verstreken tijd en geschatte resterende tijd (12 seconden verstreken, 42 seconden resterend)
  • Iteraties per seconde (18,09 it/s).

Om een beschrijving toe te voegen aan de voortgangsbalk, geef je de optie desc op.

for i in trange(1000, desc='Processing'):  # description
    # Simulate a task
    time.sleep(0.05)

Geneste voortgangsbalken 

Geneste voortgangsbalken in tqdm helpen je de voortgang over meerdere lussen te volgen. Ze zijn ook handig wanneer je meerdere werkfases wilt bijhouden. Voorbeelden zijn batchverwerking, geneste lussen en modeltraining. 

Wikkel elke lus in een geneste lus met tqdm. Gebruik de argumenten position en leave om te bepalen hoe ze worden weergegeven.

  • position: bepaalt de verticale positie van elke voortgangsbalk. position=0 is de bovenste balk, position=1 verschijnt eronder, enzovoort.
  • leave: als leave=True blijft de voortgangsbalk op het scherm na voltooiing. Als leave=False verdwijnt hij om rommel te voorkomen.
for i in trange(3, desc='Outer loop', leave=True):
    for j in trange(5, desc='Inner loop', leave=False):
        for j in trange(4, desc='Inner inner loop', leave=False):
            time.sleep(0.05)

Geneste voortgangsbalken tonen een duidelijke hiërarchie. Ze helpen je de verschillende fasen van een taak te visualiseren. Ze geven gedetailleerd inzicht op meerdere niveaus. Dit helpt ontwikkelaars eenvoudig vertragingen of knelpunten te vinden.

Pandas-integratie

Tqdm integreert goed met pandas. Het biedt een eenvoudige manier om voortgangsbalken toe te voegen aan DataFrame- en Series-taken. Het toont real-time voortgang voor functies als apply, groupby en map. Deze functies kunnen traag zijn bij grote datasets.

Om deze functie in te schakelen, roep je tqdm.pandas() aan. Gebruik daarna progress_apply in plaats van de reguliere apply-methode van pandas. Zo verschijnt er een voortgangsbalk terwijl je functie over rijen of kolommen draait. Je ziet de voortgang van de bewerking zonder je code te hoeven herschrijven.

In het volgende programma maken we een DataFrame met een kolom genaamd "numbers". Deze kolom bevat gehele getallen van 0 tot 1000. Vervolgens genereren we een nieuwe kolom door een "trage" bewerking toe te passen genaamd slow_squared. 

In plaats van de standaard pandas-functie apply gebruiken we progress_apply van tqdm. Tijdens de bewerking verschijnt er een voortgangsbalk. Die geeft real-time updates over hoeveel verwerking is voltooid.

import pandas as pd
from tqdm import tqdm
import time

# Simulate a time-consuming operation
def slow_square(x):
    time.sleep(0.01)
    return x**2

# Create a sample DataFrame
df = pd.DataFrame({'numbers': range(1000)})

# Initialize tqdm for pandas
tqdm.pandas(desc="Processing")

# Use progress_apply instead of apply
df['slow_squared'] = df['numbers'].progress_apply(slow_square)
# Print the result
print(df.head())

De output van de code is als volgt.

We kunnen progress_apply gebruiken voor andere DataFrame-bewerkingen zoals groupby.

grouped = df.groupby('numbers').progress_apply(lambda g: g.sum())

Aanpassingsopties

Tqdm laat je voortgangsbalken aanpassen aan verschillende omgevingen en gebruikersbehoeften. Je kunt de breedte aanpassen met ncols. Met het bar_format-argument heb je volledige controle over de tekstindeling. Ook zorgt dynamic_ncols=True ervoor dat de balk automatisch wordt geschaald naar de terminal.

Prestatie-overwegingen specifiek voor tqdm

Tqdm is snel en licht. Het voegt weinig overhead toe, zelfs in snelle lussen. Je kunt voortgangsbalken uitschakelen met disable=True. Dit is handig in productieomgevingen waar prestaties cruciaal zijn. Voor snelle lussen kan elke update te veel zijn. Daarom laat tqdm je bepalen hoe vaak er wordt geüpdatet. Je kunt parameters als mininterval en maxinterval gebruiken. 

Progress: aanpasbare stijlen en spinners

De Progress-library in Python laat je eenvoudige tekstgebaseerde voortgangsbalken maken voor de commandline. Het heeft een overzichtelijke API. Het ondersteunt zowel voortgangsbalken als spinners en biedt basisaanpassing van de output. Het is klein, snel en heeft geen afhankelijkheden. Daardoor is het ideaal voor snelle scripts en eenvoudige omgevingen. 

De progress-library bevat zeven ingebouwde stijlen voor voortgangsbalken: Bar, ChargingBar, FillingSquaresBar, FillingCirclesBar, IncrementalBar, PixelBar en Shadybar. 

Installeren doe je met pip install.

pip install progress

Gebruik: importeer de gewenste stijl, instantieer een variabele, gebruik .next() in de lus en .finish() nadat het proces klaar is. Bijvoorbeeld, om een ChargingBar te gebruiken, zie onderstaande code.

import time
from progress.bar import ChargingBar
bar = ChargingBar('Processing', max=20)
for i in range(20):
    # Do some work
    time.sleep(0.5)
    
    bar.next()
bar.finish()
`

Progress bevat ook spinners voor taken met onbekende duur. De code om een spinner te implementeren is eenvoudig.

import time
from progress.spinner import Spinner

spinner = Spinner('Processing... ')

# Spinner during a task of unknown duration.
for _ in range(50): 
    # Do stuff 
    time.sleep(0.1)  # simulate a running task

    spinner.next()

spinner.finish()

Deze code resulteert in de beschrijving ("Processing…") gevolgd door een spinner.

De progress-library is eenvoudig en lichtgewicht, maar kent enkele beperkingen. Het ondersteunt geen Jupyter-notebooks en kan niet dynamisch van formaat veranderen. Bovendien biedt het minder aanpassingsopties dan libraries zoals tqdm. Het werkt goed voor basis-CLI-taken, maar kan moeite hebben met complexe of prestatiekritische jobs.

Progressbar2: meer aanpassing en compatibiliteit

Progressbar2 is een krachtige Python-library. Het helpt je flexibele en aanpasbare voortgangsbalken te maken voor commandline-apps. Het heeft veel widgets, zoals percentage, ETA, geanimeerde markers en tellers. Dit maakt het geschikt voor complexere of verzorgde CLI-taken. 

Progressbar2 biedt meer controle en opmaakopties dan eenvoudigere libraries zoals progress. Het werkt ook beter met logging en multithreaded workflows.

Installeren doe je met pip install.

pip install progressbar2

De ProgressBar-klasse in progressbar2 toont de huidige voortgangstoestand. Dat doet het met een set aanpasbare widgets. 

Een widget is een modulair onderdeel dat zich bijwerkt op basis van de staat van de voortgangsbalk. Dit omvat het voltooid percentage, verstreken tijd en geschatte resterende tijd. 

Je kunt kiezen uit veel soorten widgets. Denk aan tekstlabels, voortgangsmarkeringen, tellers, timers, spinners en aangepaste formatters. Dankzij die variatie kun je het uiterlijk en de functie van de balk afstemmen op je app.

Het basisgebruik van Progressbar2 is vrij eenvoudig. 

import time
import progressbar

for i in progressbar.progressbar(range(1000)):
    time.sleep(0.02)

De output toont het voltooid percentage, voltooide iteraties/totaal aantal iteraties, verstreken tijd en geschatte resterende tijd.

Libraries voor voortgangsbalken vertrouwen meestal op het bijwerken van één regel in de terminal met carriage returns (\r). Dit betekent dat gewone print()-statements kunnen storen door de balk naar beneden te duwen of de output te verstoren. De progressbar2-library biedt een manier om veilig berichten te printen zonder de voortgangsbalk te verstoren.

import time
import progressbar

bar = progressbar.ProgressBar(redirect_stdout=True)
for i in range(10):
    # Do some task
    time.sleep(0.1)

    # Print statement
    print(f'Loop #{i}')
    bar.update(i)

De progressbar2-library biedt uitgebreide aanpassing via het modulaire widgetsysteem. Widgets tonen details in de voortgangsbalk zoals voltooid percentage, verstreken tijd, geschatte resterende tijd, tellers of barkananimaties. Je kunt deze widgets combineren om een aangepaste voortgangsbalk te maken. Zo kun je bijvoorbeeld percentage en ETA tonen. Of je voegt meer details toe zoals bestandsnamen, tijdstempels of spinners. 

import time
import progressbar

# Define a custom set of widgets
widgets = [
    'Progress: ',                                # Description text
    progressbar.Percentage(),         # Show percentage completed
    ' ',                              
    progressbar.Bar(marker=':'),      # Custom bar with specified marker
    ' ',
    progressbar.ETA(),                    # Estimated time remaining
    ' | ',
    progressbar.Timer(),                  # Time elapsed
]

# Initialize the progress bar with widgets
bar = progressbar.ProgressBar(widgets=widgets, max_value=50)

# Task
for i in range(50):
    # Do stuff
    time.sleep(0.1)  # Simulate task
    
    bar.update(i + 1)

Alive-progress: dynamische animaties voor moderne terminals

Alive-progress toont geanimeerde voortgangsbalken die real-time veranderen. Dit geeft commandline-apps een moderne en responsieve uitstraling. De balk schuift vooruit en toont nuttige real-time statistieken. Hij laat het voltooid percentage, de verstreken tijd, de geschatte resterende tijd en de iteratiesnelheid zien. Het is zowel aantrekkelijk als informatief.

Om de alive-progress-library te installeren, gebruik je pip.

pip install alive-progress

Zoals op de GitHub-pagina staat, kun je met de volgende code een demo van de mogelijkheden zien.

from alive_progress.styles import showtime

showtime()

Je ziet output zoals hieronder.

Alive-progress kan meerdere voortgangsbalken tegelijk tonen en aansturen.

from alive_progress import alive_bar
import time
import threading

# Simulate a task
def simulate_task(name, total):
    with alive_bar(total, title=name) as bar:
        for _ in range(total):
            # Do something
            time.sleep(0.5)

            bar()

# Define threads
threads = [
    threading.Thread(target=simulate_task, args=('Task A', 50)),
    threading.Thread(target=simulate_task, args=('Task B', 70)),
    threading.Thread(target=simulate_task, args=('Task C', 40)),
]

# Start each thread
for t in threads:
    t.start()

# Block the main thread until the program is finished
for t in threads:
    t.join()

De alive-progress-library bevat meerdere ingebouwde thema’s. Thema’s bepalen elementen zoals de animatiestijl, de tekens die de balk vullen en het algemene bewegingseffect. Veelvoorkomende thema’s zijn classic, pulse en brackets.

import time
from alive_progress import alive_bar

with alive_bar(100, bar='blocks') as bar:
    for _ in range(100):
        # Do something
        time.sleep(0.02)
        
        bar()

Pauzeren/hervatten – tijdelijk stoppen en hervatten zonder de status te verliezen

from alive_progress import alive_bar
import time

# Run a task...
with alive_bar(100) as bar:
    for i in range(50):
        # Do something
        time.sleep(0.02)

        bar()
    
    # Pause
    bar.text('Temporarily pausing...')
    time.sleep(1)

    # Resume
    bar.text('Resuming...')
    for i in range(50):
        time.sleep(0.02)
        bar()

GUI-voortgangsbalken met Tkinter

Tkinter is Python’s standaard GUI (Graphical User Interface)-toolkit. Het ontwerp bevat ingebouwde functies en is direct te gebruiken, dus je hoeft niets extra’s te installeren. Je kunt vensters, knoppen, tekstvelden, menu’s, voortgangsbalken en meer maken. Tkinter is ideaal voor eenvoudige desktopapplicaties, interactieve tools en prototypes. 

Een basisvoortgangsbalk kun je maken met onderstaande code. 

import tkinter as tk
from tkinter import ttk
import time

def start_progress():
    progress["value"] = 0
    root.update_idletasks()
    for i in range(101):
        time.sleep(0.02)
        progress["value"] = i
        root.update_idletasks()

# Set up the window
root = tk.Tk()
root.title("Progress Bar")
root.geometry("300x100")

# Create a progress bar
progress = ttk.Progressbar(root, orient="horizontal", length=250, mode="determinate")
progress.pack(pady=20)

# Create a start button
start_button = ttk.Button(root, text="Start", command=start_progress)
start_button.pack()

# Start the tkinter loop
root.mainloop()

Output op mijn Mac:

Er zijn twee modi beschikbaar met ttk.Progressbar: determinate en indeterminate. De determinate-modus gebruik je wanneer de duur of het aantal stappen van een taak bekend is. De indeterminate-modus gebruik je wanneer de duur van de taak onbekend is of niet in stappen kan worden gemeten.

De bovenstaande code is voor een determinate-modus, omdat we wisten dat de taak 250 stappen duurde. Hieronder volgt een voorbeeld van een indeterminate-modus.

import tkinter as tk
from tkinter import ttk
import time
import threading

def start_indeterminate():
    def run():
        # 10 ms between moves
        progress.start(10)

        # Simulate task of unknown duration
        time.sleep(10)

        # Stop
        progress.stop()
    
    # Run in a thread, else the tkinter GUI loop is unresponsive
    threading.Thread(target=run).start()

# Set up the GUI
root = tk.Tk()
root.title("Indeterminate Progress Bar")
root.geometry("300x100")

# Create an indeterminate progress bar
progress = ttk.Progressbar(root, mode='indeterminate', length=250)
progress.pack(pady=20)

# Start button
start_button = ttk.Button(root, text="Start", command=start_indeterminate)
start_button.pack()

# Run the tkinter loop
root.mainloop()

Merk op dat de voortgangsbalk in een aparte thread werd uitgevoerd. Als we run() direct in de main thread zouden gebruiken, zou de aanroep time.sleep() de hoofd-Tkinter-eventloop blokkeren en de hele GUI laten vastlopen, inclusief knopklikken, het opnieuw tekenen van vensters en de animatie van de voortgangsbalk.

Prestatie-overwegingen en optimalisatie

Welke library moet je gebruiken voor je voortgangsbalk? Een deel van de keuze hangt af van je overheadvereisten en je use case.

Library

Overhead

Use case

tqdm

Zeer laag

Snelle lussen, datapijplijnen, minimale impact op prestaties

progress

Laag

Eenvoudige CLI-scripts, lichtgewicht en geen afhankelijkheden

progressbar2

Gemiddeld

Aangepaste lay-outs, ETA en logging; lichte vertraging bij snelle taken

alive-progress

Gemiddeld tot hoog

Visueel rijke taken, multi-balk-uitvoer, vloeiende animaties; het best voor langere taken

Om de prestaties te verbeteren, optimaliseer je de updatefrequentie. Eén manier is om de balk niet bij elke iteratie te updaten. Dit is vooral belangrijk in snelle of hoogfrequente lussen. Gebruik voorwaardelijke logica om elke N stappen te updaten, bijvoorbeeld elke 100 iteraties.

Schakel in kritieke prestatie-instellingen of productcode voortgangsbalken uit. Visuele feedback is daar niet nodig. Dit bespaart resources, terwijl de logica gelijk blijft voor ontwikkeling of debugging. 

Het terugdringen van I/O-bewerkingen is cruciaal voor prestaties. Schrijven naar terminal, schijf of netwerk kan vertragen. Hier zijn enkele strategieën om I/O te verminderen bij prestatiekritische taken.

  • Buffer output en schrijf in batches in plaats van per iteratie.
  • Update alleen op vaste intervallen of onder specifieke voorwaarden.
  • Minimaliseer of schakel print() binnen lussen uit.
  • Voeg flags toe om onnodige output in productie te onderdrukken.
  • Scheid I/O en computation met threads of multiprocessing.
  • Comprimeer of batch grote writes om de schijf-I/O-frequentie te verlagen.

Best practices voor effectieve voortgangsbalken

Laten we enkele best practices bekijken om rekening mee te houden bij het maken van voortgangsbalken in Python. 

Waarom voortgangsbalken gebruiken?

Er zijn veel goede redenen om voortgangsbalken in je applicaties te gebruiken. Ten eerste geven ze real-time feedback, zodat gebruikers gerustgesteld worden dat taken vorderen en onzekerheid afneemt. Deze zichtbaarheid verbetert de gebruikerservaring, maakt wachttijden korter voelbaar en interacties intuïtiever. 

Ten tweede maken voortgangsbalken, door taakvoltooiing visueel te volgen, eenvoudige performancemonitoring mogelijk, zodat zowel gebruikers als ontwikkelaars snel knelpunten of vastgelopen processen kunnen signaleren tijdens langlopende operaties. Tot slot tilt het opnemen van voortgangsbalken de professionaliteit van de interface van je applicatie naar een hoger niveau, met helderheid en een doordachte, gebruikergerichte aanpak.

Taken met bekende vs. onbekende duur

Gebruik een determinate voortgangsbalk voor taken met een vaste tijd. Denk aan bestandsverwerking, lussen of epochs bij het trainen van machinelearning. Dit type balk vult op basis van meetbare voortgang en geeft gebruikers een duidelijk beeld van hoeveel werk er nog resteert.

Voor taken met onbekende lengte, zoals API-calls of achtergrondchecks, gebruik je een spinner of een indeterminate balk. Deze bieden een visuele aanwijzing dat het proces loopt, ook als we niet kunnen voorspellen hoe lang het nog duurt.

Welke library moet ik gebruiken?

De library die je gebruikt hangt af van de taken die je wilt uitvoeren.

Taak 

Library

Opmerkingen

Hoogfrequente lussen

tqdm

Lichtgewicht, efficiënt; gebruik mininterval om updates te verminderen

Simpele eenmalige scripts

progress

Minimale setup, geen afhankelijkheden, ideaal voor snelle taken

Gestructureerde of aangepaste output

progressbar2

Widget-gebaseerd, ondersteunt ETA, timers en lay-outcontrole

Meerdere fasen of geneste taken

tqdm, alive-progress

Ondersteunt geneste balken of multi-balkweergave voor gelaagde taken

CLI-scripts met visuele afwerking

alive-progress

Geanimeerde en moderne visuals, soepele gebruikerservaring

GUI-applicaties

tkinter

Ingebouwde GUI-toolkit met determinate en indeterminate balken

Aanpassing

Richt je bij het aanpassen van voortgangsbalken op duidelijkheid en nuttige informatie. Streef naar een goede balans tussen die twee. Een duidelijke, eenvoudige balk met kerncijfers is meestal beter dan een overvolle weergave.

Je kunt libraries als progressbar2 en alive-progress gebruiken. Daarmee kun je de lay-out, kleur en animatie van je voortgangsbalken aanpassen. Gebruik thema’s of formatting om de gebruikerservaring te verbeteren. Vermijd het dichtstoppen van de weergave met te veel widgets of complexe visuals. Het doel is nuttige feedback geven, zonder af te leiden of te overweldigen.

Foutafhandeling en compatibiliteitstesten

Omhul logica voor voortgangsbalken met try-except-blokken. Zo voorkom je UI-glitches of crashes als er tijdens een taak een fout optreedt. Dit is cruciaal in scripts die lang draaien of wanneer je onzekere externe afhankelijkheden gebruikt.

Test je voortgangsbalken ook in verschillende omgevingen. Controleer op diverse besturingssystemen, terminaltypes en schermbreedtes. Zo zorg je dat het gedrag consistent blijft.

Sommige libraries gedragen zich anders in Jupyter-notebooks, remote terminals of GUI-shells. Vroegtijdig compatibiliteit verifiëren voorkomt onverwachte issues. Zo hebben gebruikers in productie een soepelere ervaring.

Toegankelijkheidsoverwegingen

Houd bij het maken van voortgangsindicatoren rekening met toegankelijkheid. Zo krijgen alle gebruikers duidelijke feedback. Enkele suggesties:

  • Verlaat je niet alleen op kleur of animatie om voortgang te tonen. Voeg tekstelementen toe zoals percentages, stap-aantallen of tijdschattingen.
  • Gebruik duidelijke visuals met hoog contrast voor betere leesbaarheid.
  • Zorg dat je voortgangsbalken goed werken met screenreaders in GUI-applicaties.
  • Overweeg voor commandlinetools een verbose-optie die voortgang in platte tekst print.

Toegankelijkheid prioriteren verhoogt de bruikbaarheid. Het maakt je tools ook inclusiever en professioneler.

Conclusie 

Voortgangsbalken zijn een eenvoudige maar krachtige feature voor elke Python-app. Ze geven directe feedback, verbeteren de gebruikerservaring en helpen prestaties en codehelderheid te volgen. De juiste library kiezen is cruciaal. Het kan je software versterken, of je nu een snel script, een commandlinetool of een volledige GUI-app bouwt. Een doordachte implementatie kan de snelheid, professionaliteit en gebruiksvriendelijkheid van je software verbeteren. Door prioriteit te geven aan aanpasbaarheid, prestaties, compatibiliteit en toegankelijkheid worden voortgangsbalken meer dan alleen visuals. Ze worden een belangrijk onderdeel van hoe gebruikers met je werk omgaan.

Blijf leren met deze resources:

Python-voortgangsbalken: veelgestelde vragen

Wat is een voortgangsbalk?

Een voortgangsbalk is een visuele indicator die laat zien hoeveel van een taak is voltooid en hoeveel er nog resteert. Het verbetert de gebruikerservaring door feedback te geven tijdens lange bewerkingen.

Wat zijn populaire libraries voor voortgangsbalken in Python?

De meest gebruikte libraries zijn tqdm, progress, progressbar2 en alive-progress.

Kan ik voortgangsbalken gebruiken met de pandas-library?

Ja, dat kan. tqdm integreert met pandas via progress_apply() (in plaats van apply) en vergelijkbare methoden.

Kan ik het uiterlijk van een voortgangsbalk aanpassen?

Ja. Libraries zoals tqdm en progressbar2 laten je lay-out, breedte, kleur en updatefrequentie aanpassen.

Welke library moet ik gebruiken voor Jupyter Notebooks.

De library tqdm.notebook integreert goed met Jupyter.

Mark Pedigo

Auteur

Mark Pedigo

Mark Pedigo, PhD, is een vooraanstaande data scientist met expertise in data science voor de gezondheidszorg, programmeren en onderwijs. Met een PhD in Wiskunde, een B.S. in Computer Science en een Professional Certificate in AI combineert Mark technische kennis met praktische probleemoplossing. In zijn loopbaan werkte hij onder meer aan fraudedetectie, het voorspellen van kindersterfte en financiële forecasting, en leverde hij bijdragen aan NASA’s software voor kostenraming. Als docent gaf hij les bij DataCamp en Washington University in St. Louis en begeleidde hij junior programmeurs. In zijn vrije tijd geniet Mark samen met zijn vrouw Mandy en hond Harley van de buitenlucht in Minnesota en speelt hij jazzpiano.

Onderwerpen