wxPython - RadioButton et RadioBox

Un bouton radio représente généralement l'un des nombreux boutons sélectionnables disponibles pour l'utilisateur dans un groupe. Chaque bouton, un objet de la classe wx.RadioButton porte une étiquette de texte à côté d'un bouton rond.

Afin de créer un groupe de boutons sélectionnables mutuellement, le paramètre de style du premier objet wxRadioButton est défini sur wx.RB_GROUP. Les objets boutons suivants sont ajoutés à un groupe.

L'API wxPython comprend également la classe wx.RadioBox. Son objet offre une bordure et une étiquette au groupe. Les boutons du groupe peuvent être disposés horizontalement ou verticalement.

Le constructeur wx.RadioButton ressemble à -

Wx.RadioButton(parent, id, label, pos, size, style)

Le paramètre de style n'est présent que pour le premier bouton du groupe. Sa valeur est wx.RB_GROUP. Pour les boutons suivants du groupe, le paramètre de style wx.RB_SINGLE peut être utilisé en option.

Classeur d'événements wx.RadioButton wx.EVT_RADIOBUTTON déclenche le gestionnaire associé chaque fois qu'un clic sur l'un des boutons du groupe est effectué.

Deux méthodes importantes de la classe wx.RadioButton sont SetValue () - pour sélectionner ou désélectionner un bouton par programme - et GetValue () - qui renvoie true si un bouton est sélectionné et est false dans le cas contraire.

UNE wx.RadioBoxplace une collection de boutons mutuellement exclusifs dans une boîte statique. Chaque bouton du groupe prend son étiquette à partir d'un objet List qui agit comme paramètre «choix» pour le constructeur wx.RadioBox.

Les boutons de RadioBox sont disposés en ligne ou en colonne. Pour ce paramètre «style» du constructeur, il faut soit wx.RA_SPECIFY_ROWS soit wx.RA_SPECIFY_COLS. Le nombre de lignes / colonnes est déterminé par la valeur du paramètre «majordimensions».

Le prototype du constructeur wx.RadioBox est -

Wx.RadioBox(parent, id, label, pos, size, choices[], initialdimensions, style)

Voici les méthodes importantes de la classe wx.RadioBox -

SN Méthodes et description
1

GetSelection()

Renvoie l'index de l'élément sélectionné

2

SetSelection()

Sélectionne un élément par programmation

3

GetString()

Renvoie l'étiquette de l'élément sélectionné

4

SetString()

Attribue l'étiquette à l'élément sélectionné

5

Show()

Affiche ou masque l'élément de l'index donné

Le classeur d'événements associé à l'objet wx.RadioBox est wx.EVT_RADIOBOX. Le gestionnaire d'événements associé identifie la sélection de bouton et la traite.

Exemple

L'exemple suivant illustre l'utilisation de RadioBox ainsi que RadioButton. Tout d'abord, trois RadioButtons, regroupés en spécifiant le style wx.RB_GROUP, sont placés sur le panneau.

self.rb1 = wx.RadioButton(pnl,11, label = 'Value A', pos = (10,10), style = wx.RB_GROUP) 
self.rb2 = wx.RadioButton(pnl,22, label = 'Value B',pos = (10,40)) 
self.rb3 = wx.RadioButton(pnl,33, label = 'Value C',pos = (10,70))

La RadioBox, quant à elle, lit les étiquettes de ses boutons à partir d'un objet lblList [].

lblList = ['Value X', 'Value Y', 'Value Z']     
self.rbox = wx.RadioBox(pnl,label = 'RadioBox', pos = (80,10), choices = lblList ,
   majorDimension = 1, style = wx.RA_SPECIFY_ROWS)

Deux classeurs d'événements, l'un pour le groupe radio et l'autre pour RadioBox, sont déclarés.

self.Bind(wx.EVT_RADIOBUTTON, self.OnRadiogroup) 
self.rbox.Bind(wx.EVT_RADIOBOX,self.onRadioBox)

Les gestionnaires d'événements correspondants identifient le bouton sélectionné et affichent le message dans la fenêtre de la console.

def OnRadiogroup(self, e): 
   rb = e.GetEventObject() 
   print rb.GetLabel(),' is clicked from Radio Group' 
	
def onRadioBox(self,e): 
   print self.rbox.GetStringSelection(),' is clicked from Radio Box'

Le code complet est le suivant -

import wx   

class Example(wx.Frame): 
            
   def __init__(self, parent, title): 
      super(Example, self).__init__(parent, title = title,size = (300,200)) 
         
      self.InitUI() 
		
   def InitUI(self):    
      pnl = wx.Panel(self)
		
      self.rb1 = wx.RadioButton(pnl,11, label = 'Value A',
         pos = (10,10), style = wx.RB_GROUP) 
      self.rb2 = wx.RadioButton(pnl,22, label = 'Value B',pos = (10,40)) 
      self.rb3 = wx.RadioButton(pnl,33, label = 'Value C',pos = (10,70)) 
      self.Bind(wx.EVT_RADIOBUTTON, self.OnRadiogroup)
		
      lblList = ['Value X', 'Value Y', 'Value Z'] 
		  
      self.rbox = wx.RadioBox(pnl, label = 'RadioBox', pos = (80,10), choices = lblList,
         majorDimension = 1, style = wx.RA_SPECIFY_ROWS) 
      self.rbox.Bind(wx.EVT_RADIOBOX,self.onRadioBox) 
         
      self.Centre() 
      self.Show(True)    
		
   def OnRadiogroup(self, e): 
      rb = e.GetEventObject() 
      print rb.GetLabel(),' is clicked from Radio Group' 
		
   def onRadioBox(self,e): 
      print self.rbox.GetStringSelection(),' is clicked from Radio Box' 
   
ex = wx.App() 
Example(None,'RadioButton and RadioBox') 
ex.MainLoop()

Le code ci-dessus produit la sortie suivante -

La valeur B est cliquée dans le groupe radio

La valeur C est cliquée dans le groupe radio

La valeur Y est cliquée depuis Radio Box

La valeur X est cliquée depuis Radio Box