Progress bars and spinners
This sample demonstrates two progress bar styles and how to update them too show progress, it also demonstrates starting and stopping a spinning graphic.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 |
#!/usr/bin/env python
from gi.repository import Gtk, GLib
class application_gui:
"""Tutorial 05 demo progress bars and the spinner graphic."""
count = 0
def __init__(self):
#load in our glade interface
xml = Gtk.Builder()
xml.add_from_file('tut05.glade')
#grab our widget using get_object this is the name of the widget from glade, window1 is the default name
self.window = xml.get_object('window1')
self.text = xml.get_object('entry1')
#load our widgets from the glade file
self.widgets = {}
self.widgets['entry'] = xml.get_object('entry2')
self.widgets['spinner1'] = xml.get_object('spinner1')
self.widgets['spinnerbutton'] = xml.get_object('togglebutton1')
self.widgets['progress1'] = xml.get_object('progressbar1')
self.widgets['progress2'] = xml.get_object('progressbar2')
self.widgets['spinnerbutton'].connect('clicked', self.toggle_spinner)
self.widgets['progress1'].set_text('active mode')
self.widgets['progress2'].set_text('percentage mode')
#connect to events, in this instance just quit our application
self.window.connect('delete_event', Gtk.main_quit)
self.window.connect('destroy', lambda quit: Gtk.main_quit())
#show the window else there is nothing to see :)
self.window.show()
self.widgets['spinner1'].start()
GLib.timeout_add_seconds(1, self.update_active_progress_bar)
GLib.timeout_add_seconds(1, self.update_percentage_progress_bar)
def update_active_progress_bar(self):
# nudge the progress bar to show something is still happening, just updating every second in the example
# long running processes which have an unknow finish time would use this version
self.widgets['progress1'].pulse()
return True
def update_percentage_progress_bar(self):
self.count +=0.1
self.widgets['progress2'].set_fraction(self.count)
if self.count<1:
return True
else:
return False
def toggle_spinner(self, widget):
if widget.get_active():
self.widgets['spinner1'].start()
else:
self.widgets['spinner1'].stop()
application = application_gui()
Gtk.main()
|