1 from wxPython
.wx
import *
3 #---------------------------------------------------------------------------
5 class TestComboBox(wxPanel
):
6 def OnSetFocus(self
, evt
):
9 def OnKillFocus(self
, evt
):
13 def __init__(self
, parent
, log
):
15 wxPanel
.__init
__(self
, parent
, -1)
17 sampleList
= ['zero', 'one', 'two', 'three', 'four', 'five',
18 ##'this is a long item that needs a scrollbar...',
19 'six', 'seven', 'eight']
21 wxStaticText(self
, -1, "This example uses the wxComboBox control.",
24 wxStaticText(self
, -1, "Select one:", wxPoint(15, 50), wxSize(75, 18))
25 cb
= wxComboBox(self
, 500, "default value", wxPoint(90, 50), wxSize(95, -1),
26 sampleList
, wxCB_DROPDOWN
)#|wxTE_PROCESS_ENTER)
27 ##import win32api, win32con
28 ##win32api.SendMessage(cb.GetHandle(),
29 ## win32con.CB_SETHORIZONTALEXTENT,
32 EVT_COMBOBOX(self
, 500, self
.EvtComboBox
)
33 EVT_TEXT(self
, 500, self
.EvtText
)
34 EVT_TEXT_ENTER(self
, 500, self
.EvtTextEnter
)
35 EVT_SET_FOCUS(cb
, self
.OnSetFocus
)
36 EVT_KILL_FOCUS(cb
, self
.OnKillFocus
)
38 cb
.Append("foo", "This is some client data for this item")
40 cb
= wxComboBox(self
, 501, "default value", wxPoint(90, 80), wxSize(95, -1),
42 for item
in sampleList
:
43 cb
.Append(item
, item
.upper())
44 EVT_COMBOBOX(self
, 501, self
.EvtComboBox
)
45 EVT_TEXT(self
, 501, self
.EvtText
)
48 def EvtComboBox(self
, evt
):
49 cb
= evt
.GetEventObject()
50 data
= cb
.GetClientData(cb
.GetSelection())
51 self
.log
.WriteText('EvtComboBox: %s\nClientData: %s\n' % (evt
.GetString(), data
))
53 def EvtText(self
, evt
):
54 self
.log
.WriteText('EvtText: %s\n' % evt
.GetString())
56 def EvtTextEnter(self
, evt
):
57 self
.log
.WriteText('EvtTextEnter: does this work?')
59 #---------------------------------------------------------------------------
61 def runTest(frame
, nb
, log
):
62 win
= TestComboBox(nb
, log
)
65 #---------------------------------------------------------------------------
74 A combobox is like a combination of an edit control and a listbox. It can be displayed as static list with editable or read-only text field; or a drop-down list with text field; or a drop-down list without a text field.
80 if __name__
== '__main__':
83 run
.main(['', os
.path
.basename(sys
.argv
[0])])