PyGTK - ProgressBar Class
Le barre di avanzamento vengono utilizzate per fornire all'utente l'indicazione visiva di un processo di lunga durata. Il widget gtk.ProgressBar può essere utilizzato in due modalità: modalità percentuale e modalità attività.
Quando è possibile stimare con precisione quanto lavoro è in attesa di essere completato, la barra di avanzamento può essere utilizzata in modalità percentuale e l'utente vede una barra incrementale che mostra la percentuale del lavoro completato. Se invece è possibile determinare con precisione la quantità di lavoro da completare, la barra di avanzamento viene utilizzata in modalità attività in cui la barra mostra l'attività visualizzando un blocco che si muove avanti e indietro.
Il seguente costruttore inizializza il widget della classe gtk.ProgressBar -
pb = gtk.ProgressBar()
gtk.ProgressBar utilizza i seguenti metodi per gestire le funzionalità:
ProgressBar.pulse()- Questo spinge la barra di avanzamento per indicare che sono stati fatti dei progressi, ma non sai quanto. Questo metodo modifica anche la modalità della barra di avanzamento in "modalità attività", in cui un blocco rimbalza avanti e indietro.
ProgressBar.set_fraction(fraction) - Questo fa sì che la barra di avanzamento "riempia" la parte della barra specificata da fraction. Il valore difraction dovrebbe essere compreso tra 0,0 e 1,0.
ProgressBar.set_pulse_setup() - Questo imposta la porzione (specificata da fraction) della lunghezza totale della barra di avanzamento per spostare il blocco che rimbalza per ogni chiamata nel file pulse() metodo.
ProgressBar.set_orientation()- Questo imposta l'orientamento della barra di avanzamento. Può essere impostato su una delle seguenti costanti:
gtk.PROGRESS_LEFT_TO_RIGHT
gtk.PROGRESS_RIGHT_TO_LEFT
gtk.PROGRESS_BOTTOM_TO_TOP
gtk.PROGRESS_TOP_TO_BOTTOM
Nel seguente programma, il widget gtk.ProgressBar viene utilizzato in modalità attività. Quindi, la posizione iniziale di avanzamento è impostata su 0,0 daset_fraction() metodo.
self.pb = gtk.ProgressBar()
self.pb.set_text("Progress")
self.pb.set_fraction(0.0)
Per incrementare il progresso dell'1% dopo 100 millisecondi, viene dichiarato un oggetto timer e viene impostata una funzione di callback da richiamare ogni 100 ms in modo che la barra di avanzamento venga aggiornata.
self.timer = gobject.timeout_add (100, progress_timeout, self)
Qui, progress_timeout()è la funzione di callback. Incrementa il parametro diset_fraction() dell'1 percento e aggiorna il testo nella barra di avanzamento per mostrare la percentuale di completamento.
def progress_timeout(pbobj):
new_val = pbobj.pb.get_fraction() + 0.01
pbobj.pb.set_fraction(new_val)
pbobj.pb.set_text(str(new_val*100)+" % completed")
return True
Esempio
Rispettare il codice seguente:
import gtk, gobject
def progress_timeout(pbobj):
new_val = pbobj.pb.get_fraction() + 0.01
pbobj.pb.set_fraction(new_val)
pbobj.pb.set_text(str(new_val*100)+" % completed")
return True
class PyApp(gtk.Window):
def __init__(self):
super(PyApp, self).__init__()
self.set_title("Progressbar demo")
self.set_size_request(300,200)
self.set_position(gtk.WIN_POS_CENTER)
fix = gtk.Fixed()
self.pb = gtk.ProgressBar()
self.pb.set_text("Progress")
self.pb.set_fraction(0.0)
fix.put(self.pb,80,100)
self.add(fix)
self.timer = gobject.timeout_add (100, progress_timeout, self)
self.connect("destroy", gtk.main_quit)
self.show_all()
PyApp()
gtk.main()
Il codice sopra genererà il seguente output:
Per utilizzare la barra di avanzamento in modalità attività, modificare la funzione di richiamata come segue ed eseguire:
def progress_timeout(pbobj):
pbobj.pb.pulse()
return True
Il movimento avanti e indietro di un blocco all'interno della barra di avanzamento mostrerà l'avanzamento dell'attività.