Wxpython-wx-combobox-choice-class

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

wxPython-ComboBox&Choiceクラス

*wx.ComboBox* オブジェクトは、選択するアイテムのリストを提供します。 ドロップダウンリストまたは永続的な表示を構成できます。

リストから選択されたアイテムはテキストフィールドに表示され、デフォルトでは編集可能ですが、wx.CB_READONLYスタイルパラメータがある場合は読み取り専用に設定できます。

wxPython APIには* wx.Choiceクラス*が含まれ、そのオブジェクトはドロップダウンリストでもあり、これは永続的に読み取り専用です。

wx.ComboBoxクラスのコンストラクタで使用されるパラメータは次のとおりです-

Wx.ComboBox(parent, id, value, pos, size, choices[], style)

値パラメーターは、コンボボックスのテキストボックスに表示されるテキストです。 choices []コレクションのアイテムから生成されます。

次のスタイルパラメータはwx.ComboBoxのために定義されています-

S.N. Parameters & Description
1

wx.CB_SIMPLE

リストが永続的に表示されるコンボボックス

2

wx.CB_DROPDOWN

ドロップダウンリスト付きのコンボボックス

3

wx.CB_READONLY

選択したアイテムは編集できません

4

wx.CB_SORT

リストはアルファベット順に表示されます

次の表は、wx.ComboBoxクラスの一般的に使用されるメソッドを示しています-

以下に、wx.ComboBoxの最も一般的に使用されるメソッドを示します

S.N. methods & Description
1

GetCurrentSelection ()

選択されているアイテムを返します

2

SetSelection()

指定されたインデックスで選択されたアイテムを設定します

3

GetString()

指定されたインデックスにあるアイテムに関連付けられた文字列を返します

4

SetString()

指定されたインデックスのアイテムのテキストを変更します

5

SetValue()

コンボボックスの編集フィールドに表示されるテキストとして文字列を設定します

6

GetValue()

コンボボックスのテキストフィールドの内容を返します

7

FindString()

リスト内の指定された文字列を検索します

8

GetStringSelection()

現在選択されているアイテムのテキストを取得します

このクラスによって生成されたイベントのイベントバインダーは次のとおりです-

S.N. Events & Description
1

wx. COMBOBOX

リストから項目が選択されたとき

2

wx. EVT_TEXT

コンボボックスのテキストが変更されたとき

3

wx. EVT_COMBOBOX_DROPDOWN

リストがドロップダウンするとき

4

wx. EVT_COMBOBOX_CLOSEUP

リストが折りたたまれたとき

wx.Choiceクラスコンストラクタのプロトタイプは次のとおりです-

wx.Choice(parent, id, pos, size, n, choices[], style)

パラメータ「n」は、選択リストを初期化する文字列の数を表します。 comboBoxと同様に、リストにはchoices []コレクションのアイテムが入力されます。

Choiceクラスの場合、定義されるスタイルパラメーターは1つだけです。 wx.CB_SORTです。 このクラスによって発行されたイベントを処理するイベントバインダーは1つだけです。 wx.EVT_CHOICEです。

この例では、wx.ComboBoxおよびwx.Choiceの機能を表示します。 両方のオブジェクトは、垂直ボックスサイザーに配置されます。 リストには、languages [] Listオブジェクトのアイテムが入力されます。

languages = ['C', 'C++', 'Python', 'Java', 'Perl']
self.combo = wx.ComboBox(panel,choices = languages)
self.choice = wx.Choice(panel,choices = languages)

イベントバインダーEVT_COMBOBOXおよびEVT_CHOICEは、対応するイベントを処理します。

self.combo.Bind(wx.EVT_COMBOBOX, self.OnCombo)
self.choice.Bind(wx.EVT_CHOICE, self.OnChoice)

次のハンドラー関数は、ラベル上のリストから選択されたアイテムを表示します。

def OnCombo(self, event):
   self.label.SetLabel("selected "+ self.combo.GetValue() +" from Combobox")

def OnChoice(self,event):
   self.label.SetLabel("selected "+ self.choice.
      GetString( self.choice.GetSelection() ) +" from Choice")

完全なコードリストは次のとおりです-

import wx
class Mywin(wx.Frame):
   def __init__(self, parent, title):
      super(Mywin, self).__init__(parent, title = title,size = (300,200))

      panel = wx.Panel(self)
      box = wx.BoxSizer(wx.VERTICAL)
      self.label = wx.StaticText(panel,label = "Your choice:" ,style = wx.ALIGN_CENTRE)
      box.Add(self.label, 0 , wx.EXPAND |wx.ALIGN_CENTER_HORIZONTAL |wx.ALL, 20)
      cblbl = wx.StaticText(panel,label = "Combo box",style = wx.ALIGN_CENTRE)

      box.Add(cblbl,0,wx.EXPAND|wx.ALIGN_CENTER_HORIZONTAL|wx.ALL,5)
      languages = ['C', 'C++', 'Python', 'Java', 'Perl']
      self.combo = wx.ComboBox(panel,choices = languages)

      box.Add(self.combo,1,wx.EXPAND|wx.ALIGN_CENTER_HORIZONTAL|wx.ALL,5)
      chlbl = wx.StaticText(panel,label = "Choice control",style = wx.ALIGN_CENTRE)

      box.Add(chlbl,0,wx.EXPAND|wx.ALIGN_CENTER_HORIZONTAL|wx.ALL,5)
      self.choice = wx.Choice(panel,choices = languages)
      box.Add(self.choice,1,wx.EXPAND|wx.ALIGN_CENTER_HORIZONTAL|wx.ALL,5)

      box.AddStretchSpacer()
      self.combo.Bind(wx.EVT_COMBOBOX, self.OnCombo)
      self.choice.Bind(wx.EVT_CHOICE, self.OnChoice)

      panel.SetSizer(box)
      self.Centre()
      self.Show()

   def OnCombo(self, event):
      self.label.SetLabel("You selected"+self.combo.GetValue()+" from Combobox")

   def OnChoice(self,event):
      self.label.SetLabel("You selected "+ self.choice.GetString
         (self.choice.GetSelection())+" from Choice")

app = wx.App()
Mywin(None,  'ComboBox and Choice demo')
app.MainLoop()

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

コンボボックス出力