Wxpython-wx-combobox-choice-class
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()
上記のコードは、次の出力を生成します-