wxPython - Clase de calibre

Se llama al control de la barra de progreso en wxPython Gauge. El objeto de clase Wx.Gauge muestra una barra vertical u horizontal, que muestra gráficamente la cantidad en aumento. Por lo general, se usa para demostrar la progresión de un proceso, como copiar archivos o instalar un software.

Wx.Gauge controlse puede utilizar tanto en modo determinado como en modo indeterminado. Cuando el tiempo necesario para completar cualquier operación se puede determinar con bastante precisión, la barra de progreso del medidor muestra el porcentaje de tarea completada. Sin embargo, en modo indeterminado, solo indica que el proceso está en curso.

En modo determinado, la posición de progreso se actualiza periódicamente. En modo indeterminado, llamar a la función Pulse () actualizará la barra de progreso.

Los parámetros requeridos por el constructor de la clase Wx.Gauge son:

wx.Gauge(parent, id, range, pos, size, style)

El parámetro de rango establece el valor máximo para el medidor. En modo indeterminado, este parámetro se ignora.

Los posibles parámetros de estilo para la clase Gauge son:

SN Parámetros y descripción
1

wx.GA_HORIZONTAL

El diseño horizontal de la barra de progreso

2

wx.GA_VERTICAL

El diseño vertical de la barra de progreso

3

wx.GA_SMOOTH

Suaviza la barra de progreso con un paso de actualización de un píxel de ancho

4

wx.GA_TEXT

Muestra el valor actual en porcentaje

Algunos de los métodos importantes de esta clase se enumeran en la siguiente tabla:

SN Métodos y descripción
1

GetRange()

Devuelve el valor máximo del indicador.

2

SetRange()

Establece el valor máximo para el indicador

3

GetValue()

Devuelve el valor actual del indicador.

4

SetValue()

Establece el valor actual mediante programación

5

Pulse()

Cambia el medidor a modo indeterminado

Ejemplo

En el siguiente ejemplo, se agrega un objeto Indicador horizontal en el medidor de cuadro vertical del panel.

self.gauge = wx.Gauge(pnl, range = 20, size = (250, 25), style = wx.GA_HORIZONTAL)

También hay un botón cuyo evento de clic está asociado con una función de controlador.

self.btn1 = wx.Button(pnl, label = "Start") 
self.Bind(wx.EVT_BUTTON, self.OnStart, self.btn1)

La función de controlador OnStart () actualiza el progreso del indicador después de cada segundo.

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

El código completo para el ejemplo es el siguiente:

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()

El código anterior produce la siguiente salida: