wxPython - Classe de jauge

Le contrôle de la barre de progression dans wxPython est appelé Gauge. L'objet de classe Wx.Gauge affiche une barre verticale ou horizontale, qui montre graphiquement la quantité incrémentée. Il est généralement utilisé pour démontrer la progression d'un processus comme la copie de fichiers ou l'installation d'un logiciel.

Wx.Gauge controlpeut être utilisé en mode déterminé ou indéterminé. Lorsque le temps nécessaire pour terminer une opération peut être déterminé avec assez de précision, la barre de progression de la jauge indique le pourcentage de la tâche terminée. Cependant, en mode indéterminé, cela indique uniquement que le processus est en cours.

En mode déterminé, la position de progression est mise à jour périodiquement. En mode indéterminé, l'appel de la fonction Pulse () mettra à jour la barre de progression.

Les paramètres requis par le constructeur de classe Wx.Gauge sont -

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

Le paramètre range définit la valeur maximale de la jauge. En mode indéterminé, ce paramètre est ignoré.

Les paramètres de style possibles pour la classe Gauge sont -

SN Paramètres et description
1

wx.GA_HORIZONTAL

La disposition horizontale de la barre de progression

2

wx.GA_VERTICAL

La disposition verticale de la barre de progression

3

wx.GA_SMOOTH

Lisse la barre de progression avec une étape de mise à jour de large pixel

4

wx.GA_TEXT

Affiche la valeur actuelle en pourcentage

Certaines des méthodes importantes de cette classe sont répertoriées dans le tableau suivant -

SN Méthodes et description
1

GetRange()

Renvoie la valeur maximale de la jauge

2

SetRange()

Définit la valeur maximale de la jauge

3

GetValue()

Renvoie la valeur actuelle de la jauge

4

SetValue()

Définit la valeur actuelle par programme

5

Pulse()

Bascule la jauge en mode indéterminé

Exemple

Dans l'exemple suivant, un objet Jauge horizontal est ajouté dans le gabarit vertical du panneau.

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

Il existe également un bouton dont l'événement de clic est associé à une fonction de gestionnaire.

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

La fonction de gestionnaire OnStart () met à jour la progression de la jauge après chaque seconde.

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

Le code complet de l'exemple est le suivant -

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

Le code ci-dessus produit la sortie suivante -