wxPython - Classe Guage
Viene chiamato il controllo della barra di avanzamento in wxPython Gauge. L'oggetto della classe Wx.Gauge mostra una barra verticale o orizzontale, che mostra graficamente la quantità crescente. Viene in genere utilizzato per dimostrare la progressione di un processo come la copia di file o l'installazione di un software.
Wx.Gauge controlpuò essere utilizzato sia in modalità determinata che indeterminata. Quando il tempo necessario per completare un'operazione può essere determinato in modo abbastanza accurato, la barra di avanzamento dell'indicatore mostra la percentuale di attività completata. Tuttavia, in modalità indeterminata, indica solo che il processo è in corso.
In modalità determinata, la posizione di avanzamento viene aggiornata periodicamente. In modalità indeterminata, la chiamata alla funzione Pulse () aggiornerà la barra di avanzamento.
I parametri richiesti dal costruttore della classe Wx.Gauge sono -
wx.Gauge(parent, id, range, pos, size, style)
Il parametro range imposta il valore massimo per il misuratore. In modalità indeterminata, questo parametro viene ignorato.
I possibili parametri di stile per la classe Gauge sono:
SN | Parametri e descrizione |
---|---|
1 | wx.GA_HORIZONTAL Il layout orizzontale della barra di avanzamento |
2 | wx.GA_VERTICAL Il layout verticale della barra di avanzamento |
3 | wx.GA_SMOOTH Uniforma la barra di avanzamento con un passaggio di aggiornamento di un pixel |
4 | wx.GA_TEXT Visualizza il valore corrente in percentuale |
Alcuni dei metodi importanti di questa classe sono elencati nella tabella seguente:
SN | Metodi e descrizione |
---|---|
1 | GetRange() Restituisce il valore massimo dell'indicatore |
2 | SetRange() Imposta il valore massimo per il misuratore |
3 | GetValue() Restituisce il valore corrente dell'indicatore |
4 | SetValue() Imposta il valore corrente a livello di codice |
5 | Pulse() Imposta il misuratore in modalità indeterminata |
Esempio
Nell'esempio seguente, un oggetto Indicatore orizzontale viene aggiunto nel dimensionamento riquadro verticale del pannello.
self.gauge = wx.Gauge(pnl, range = 20, size = (250, 25), style = wx.GA_HORIZONTAL)
C'è anche un pulsante il cui evento click è associato a una funzione di gestore.
self.btn1 = wx.Button(pnl, label = "Start")
self.Bind(wx.EVT_BUTTON, self.OnStart, self.btn1)
La funzione gestore OnStart () aggiorna l'avanzamento dell'indicatore ogni secondo.
def OnStart(self, e):
while True:
time.sleep(1);
self.count = self.count + 1
self.gauge.SetValue(self.count)
if self.count >= 20:
print "end"
return
Il codice completo per l'esempio è il seguente:
import wx
import time
class Mywin(wx.Frame):
def __init__(self, parent, title):
super(Mywin, self).__init__(parent, title = title,size = (300,200))
self.InitUI()
def InitUI(self):
self.count = 0
pnl = wx.Panel(self)
vbox = wx.BoxSizer(wx.VERTICAL)
hbox1 = wx.BoxSizer(wx.HORIZONTAL)
hbox2 = wx.BoxSizer(wx.HORIZONTAL)
self.gauge = wx.Gauge(pnl, range = 20, size = (250, 25), style = wx.GA_HORIZONTAL)
self.btn1 = wx.Button(pnl, label = "Start")
self.Bind(wx.EVT_BUTTON, self.OnStart, self.btn1)
hbox1.Add(self.gauge, proportion = 1, flag = wx.ALIGN_CENTRE)
hbox2.Add(self.btn1, proportion = 1, flag = wx.RIGHT, border = 10)
vbox.Add((0, 30))
vbox.Add(hbox1, flag = wx.ALIGN_CENTRE)
vbox.Add((0, 20))
vbox.Add(hbox2, proportion = 1, flag = wx.ALIGN_CENTRE)
pnl.SetSizer(vbox)
self.SetSize((300, 200))
self.Centre()
self.Show(True)
def OnStart(self, e):
while True:
time.sleep(1);
self.count = self.count + 1
self.gauge.SetValue(self.count)
if self.count >= 20:
print "end"
return
ex = wx.App()
Mywin(None,'wx.Gauge')
ex.MainLoop()
Il codice precedente produce il seguente output: