Wxpython-wx-radiobutton-radiobox

提供:Dev Guides
移動先:案内検索

wxPython-RadioButtonおよびRadioBox

通常、ラジオボタンは、グループ内のユーザーが利用できる多くの選択可能なボタンの1つを表します。 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クラスの2つの重要なメソッドは、プログラムでボタンを選択または選択解除するSetValue()と、ボタンが選択されるとtrueを返し、そうでない場合はfalseを返すGetValue()です。

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

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

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

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

以下は、wx.RadioBoxクラスの重要なメソッドです-

S.N. Methods & Description
1

GetSelection()

選択したアイテムのインデックスを返します

2

SetSelection()

プログラムで項目を選択します

3

GetString()

選択したアイテムのラベルを返します

4

SetString()

選択したアイテムにラベルを割り当てます

5

Show()

指定されたインデックスのアイテムを表示または非表示にします

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

次の例は、RadioBoxとRadioButtonの使用方法を示しています。 最初に、wx.RB_GROUPスタイルを指定してグループ化された3つのRadioButtonsがパネルに配置されます。

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

一方、RadioBoxは、ボタンのラベルを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つのイベントバインダーが宣言されています。

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

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

ラジオボタン出力

Radio Groupから値Bをクリックします

Radio Groupから値Cをクリックします

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

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