Tento PrograssBar ze zastavuje a spouští zmáčknutím libovolné klávesy.
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)
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.
V této ukázce se používá následující:
GtkProgressBar
GLib – hlavní smyčka událostí
Gdk – hodnoty kláves