# ProgressBar (Python)

Marta Maria Casetti
mmcasetti@gmail.com 2012
Widget, který graficky zobrazuje průběh.

# ProgressBar

Zmáčknutí libovolné klávesy zastaví a spustí tento ProgressBar.

Tento PrograssBar ze zastavuje a spouští zmáčknutím libovolné klávesy.

# Kód použitý k vygenerování tohoto příkladu

from gi.repository import GLib from gi.repository import Gtk import sys

class MyWindow(Gtk.ApplicationWindow): # Okno

def __init__(self, app): Gtk.Window.__init__(self, title="ProgressBar Example", application=app) self.set_default_size(220, 20)

# Ukazatel průběhu self.progress_bar = Gtk.ProgressBar() # Přidá ukazatel průběhu do okna self.add(self.progress_bar)

# Metoda self.pulse je volána každých 100 milisekund # a self.source_id je nastaveno na ID zdroje události # (tj. ukazatel změní polohu každých 100 milisekund) self.source_id = GLib.timeout_add(100, self.pulse)

# Obsluha události # Libovolný signál od klávesnice řídí zastavení/spuštění ukazatele průběhu def do_key_press_event(self, event): # Jestliže byl ukazatel průběhu zastaven (proto se source_id == 0 - viz # "else" níže), znovu jej zapne if (self.source_id == 0): self.source_id = GLib.timeout_add(100, self.pulse) # Jestliže se ukazatel pohybuje, odstraní zdroj s ID source_id # z hlavního kontextu (zastaví ukazatel) a nastaví source_id na 0 else: GLib.source_remove(self.source_id) self.source_id = 0 # Zastaví vysílání signálu return True

# Zdrojová funkce # Ukazatel průběhu je v "režimu aktivity", když je zavolána tato metoda def pulse(self): self.progress_bar.pulse() # Zavolá funkci znovu return True

class MyApplication(Gtk.Application):

def __init__(self): Gtk.Application.__init__(self)

def do_activate(self): win = MyWindow(self) win.show_all()

def do_startup(self): Gtk.Application.do_startup(self)

app = MyApplication() exit_status = app.run(sys.argv) sys.exit(exit_status)

# Užitečné metody pro widget ProgressBar

Místo `pulse()`, která způsobí pohyb lišty tam a zpět, můžeme chtít, aby `ProgressBar` vyplnil v příslušném poměru (desetinné číslo `float` v rozmezí `0.0` až `1.0` včetně) část lišty odpovídající tomu, co bylo z celku již dokončeno. K tomu se používá `set_fraction(fraction)`.

Chcete-li nastavit text a zobrazit jej (přes lištu) použijte `set_text("text")` a `set_show_text(True)`. Pokud text nastaven není a použijete `set_show_text(True)`, budou textem procenta dokončené části.

# Odkazy k API

V této ukázce se používá následující:

GtkProgressBar

GLib – hlavní smyčka událostí

Gdk – hodnoty kláves