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: