wxPython - RadioButton e RadioBox

Un pulsante di opzione di solito rappresenta uno dei tanti pulsanti selezionabili disponibili per l'utente in un gruppo. Ogni pulsante, un oggetto della classe wx.RadioButton, porta un'etichetta di testo accanto a un pulsante rotondo.

Per creare un gruppo di pulsanti selezionabili reciprocamente, il parametro di stile del primo oggetto wxRadioButton è impostato su wx.RB_GROUP. Gli oggetti pulsante successivi vengono aggiunti a un gruppo.

L'API wxPython consiste anche nella classe wx.RadioBox. Il suo oggetto offre un bordo e un'etichetta al gruppo. I pulsanti nel gruppo possono essere disposti orizzontalmente o verticalmente.

Il costruttore di wx.RadioButton assomiglia a -

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

Il parametro style è presente solo per il primo pulsante del gruppo. Il suo valore è wx.RB_GROUP. Per i pulsanti successivi nel gruppo, il parametro di stile wx.RB_SINGLE può essere facoltativamente utilizzato.

wx.RadioButton raccoglitore di eventi wx.EVT_RADIOBUTTON attiva il gestore associato ogni volta che si fa clic su uno dei pulsanti nel gruppo.

Due metodi importanti della classe wx.RadioButton sono SetValue () - per selezionare o deselezionare un pulsante a livello di codice - e GetValue () - che restituisce true se un pulsante è selezionato e false in caso contrario.

UN wx.RadioBoxinserisce una raccolta di pulsanti che si escludono a vicenda in una casella statica. Ogni pulsante nel gruppo prende la sua etichetta da un oggetto List che funge da parametro "scelte" per il costruttore wx.RadioBox.

I pulsanti in RadioBox sono disposti in modo riga o colonna. Per quel parametro di "stile" del costruttore dovrebbe essere wx.RA_SPECIFY_ROWS o wx.RA_SPECIFY_COLS. Il numero di righe / colonne è deciso dal valore del parametro "majordimensions".

Il prototipo del costruttore wx.RadioBox è -

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

Di seguito sono riportati i metodi importanti nella classe wx.RadioBox:

SN Metodi e descrizione
1

GetSelection()

Restituisce l'indice dell'elemento selezionato

2

SetSelection()

Seleziona un elemento a livello di codice

3

GetString()

Restituisce l'etichetta dell'articolo selezionato

4

SetString()

Assegna l'etichetta all'elemento selezionato

5

Show()

Mostra o nasconde l'elemento dell'indice specificato

Il raccoglitore di eventi associato all'oggetto wx.RadioBox è wx.EVT_RADIOBOX. Il gestore eventi associato identifica la selezione del pulsante e la elabora.

Esempio

L'esempio seguente mostra l'uso di RadioBox e RadioButton. In primo luogo, tre RadioButtons, raggruppati specificando lo stile wx.RB_GROUP, vengono posizionati sul pannello.

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

Il RadioBox, d'altra parte, legge le etichette per i suoi pulsanti da un oggetto 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)

Vengono dichiarati due raccoglitori di eventi, uno per il gruppo radio e l'altro per RadioBox.

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

I gestori di eventi corrispondenti identificano il pulsante selezionato e visualizzano il messaggio nella finestra della 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'

Il codice completo è il seguente:

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

Il codice precedente produce il seguente output:

Si fa clic sul valore B da Radio Group

Si fa clic sul valore C da Radio Group

Si fa clic sul valore Y da Radio Box

Si fa clic sul valore X da Radio Box