最新のWeb開発のチュートリアル
 

wxPythonラジオボタン&ラジオボックス


ラジオボタンは、通常、グループ内のユーザのために利用できる多くの選択ボタンのいずれかを表します。 各ボタンは、wx.RadioButtonクラスのオブジェクトは、丸いボタンの横のテキストラベルを運びます。

互いに選択可能なボタンのグループを作成するために、第一wxRadioButtonオブジェクトのスタイルパラメータはwx.RB_GROUPに設定されています。 後続のボタンオブジェクトがグループに追加されます。

wxPythonのAPIはまたwx.RadioBoxクラスで構成されています。 その目的はグループにボーダーとラベルを提供しています。 グループ内のボタンは、水平方向または垂直方向に配置することができます。

wx.RadioButtonコンストラクタは次のようになります -

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

スタイルパラメータは、グループ内の最初のボタンの存在です。 その値はwx.RB_GROUPです。 グループ内の後続のボタンに、wx.RB_SINGLEスタイルパラメータは、必要に応じて使用することができます。

wx.RadioButtonイベントバインダーwx.EVT_RADIOBUTTONは、関連するハンドラをグループ内のボタンのいずれかがクリックされるたびにトリガします。

wx.RadioButtonクラスの二つの重要な方法があるSetValue()プログラムボタンを選択または選択解除する- -とGetValue() -ボタンが選択されている場合はtrueを返し、そうでない場合はfalseです。

wx.RadioBox 、静的なボックスに相互に排他的なボタンのコレクションを配置します。 グループ内の各ボタンには、wx.RadioBoxコンストラクタの「選択肢」パラメータとして機能するListオブジェクトからそのラベルを取ります。

ラジオボックス内のボタンは、行方向または列方向ように配置されています。 コンストラクタの「スタイル」パラメータについてwx.RA_SPECIFY_ROWSまたはwx.RA_SPECIFY_COLSのいずれかでなければなりません。 行/列の数は、「majordimensions」パラメータの値によって決定されます。

wx.RadioBoxコンストラクタのプロトタイプは -

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

wx.RadioBoxクラスの重要なメソッドは次のとおり -

SN メソッドと説明
1

GetSelection()

選択した項目のインデックスを返します。

2

SetSelection()

プログラムでアイテムを選択します

3

GetString()

選択した項目のラベルを返します。

4

SetString()

選択した項目にラベルを割り当て

5

Show()

表示または指定したインデックスの項目を隠します

wx.RadioBoxオブジェクトに関連付けられたイベントのバインダーはwx.EVT_RADIOBOXです。 関連するイベントハンドラは、ボタンの選択を識別し、それを処理します。


次の例では、ラジオボックスなどのRadioButtonの使用方法を示します。 まず、wx.RB_GROUPのスタイルを指定することで、グループ化された3つのRadioButtonは、パネル上に配置されています。

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

ラジオボックスは、一方、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)

2つのイベントのバインダー、ラジオボックスのラジオ・グループに1つ、もう一方は、宣言されています。

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

対応するイベントハンドラは、選択されたボタンを特定し、コンソールウィンドウにメッセージを表示します。

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'

次のように完全なコードがあります -

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

上記のコードは、次の出力を生成します -

ラジオボタン出力

値Bは、ラジオ・グループからクリックされました

値Cは、ラジオ・グループからクリックされました

値Yは、ラジオボックスからクリックされました

値Xは、ラジオボックスからクリックされました