2 from wxPython
.wx 
import * 
   4 #--------------------------------------------------------------------------- 
   6 class TestPanel(wxPanel
): 
   7     def OnSetFocus(self
, evt
): 
  10     def OnKillFocus(self
, evt
): 
  13     def OnWindowDestroy(self
, evt
): 
  14         print "OnWindowDestroy" 
  18     def __init__(self
, parent
, log
): 
  19         wxPanel
.__init
__(self
, parent
, -1) 
  22         l1 
= wxStaticText(self
, -1, "wxTextCtrl") 
  23         t1 
= wxTextCtrl(self
, 10, "Test it out and see", size
=(125, -1)) 
  24         t1
.SetInsertionPoint(0) 
  25         EVT_TEXT(self
, 10, self
.EvtText
) 
  26         EVT_CHAR(t1
, self
.EvtChar
) 
  27         EVT_SET_FOCUS(t1
, self
.OnSetFocus
) 
  28         EVT_KILL_FOCUS(t1
, self
.OnKillFocus
) 
  29         EVT_WINDOW_DESTROY(t1
, self
.OnWindowDestroy
) 
  31         l2 
= wxStaticText(self
, -1, "Passsword") 
  32         t2 
= wxTextCtrl(self
, 20, "", size
=(125, -1), style
=wxTE_PASSWORD
) 
  33         EVT_TEXT(self
, 20, self
.EvtText
) 
  35         l3 
= wxStaticText(self
, -1, "Multi-line") 
  36         t3 
= wxTextCtrl(self
, 30, 
  37                         "Here is a looooooooooooooong line of text set in the control.\n\n" 
  38                         "The quick brown fox jumped over the lazy dog...", 
  39                        size
=(200, 100), style
=wxTE_MULTILINE
) 
  40         t3
.SetInsertionPoint(0) 
  41         EVT_TEXT(self
, 30, self
.EvtText
) 
  42         b 
= wxButton(self
, -1, "Test Replace") 
  43         EVT_BUTTON(self
, b
.GetId(), self
.OnTestReplace
) 
  44         b2 
= wxButton(self
, -1, "Test GetSelection") 
  45         EVT_BUTTON(self
, b2
.GetId(), self
.OnTestGetSelection
) 
  48         l4 
= wxStaticText(self
, -1, "Rich Text") 
  49         t4 
= wxTextCtrl(self
, 40, "If supported by the native control, this is red, and this is a different font.", 
  50                         size
=(200, 100), style
=wxTE_MULTILINE|wxTE_RICH2
) 
  51         t4
.SetInsertionPoint(0) 
  52         t4
.SetStyle(44, 47, wxTextAttr("RED", "YELLOW")) 
  54         points 
= t4
.GetFont().GetPointSize()  # get the current size 
  55         f 
= wxFont(points
+3, wxROMAN
, wxITALIC
, wxBOLD
, true
) 
  56         t4
.SetStyle(63, 77, wxTextAttr("BLUE", wxNullColour
, f
)) 
  58         bsizer 
= wxBoxSizer(wxVERTICAL
) 
  59         bsizer
.Add(b
, 0, wxGROW
) 
  60         bsizer
.Add(b2
, 0, wxGROW
) 
  62         sizer 
= wxFlexGridSizer(cols
=3, hgap
=6, vgap
=6) 
  63         sizer
.AddMany([ l1
, t1
, (0,0), 
  68         border 
= wxBoxSizer(wxVERTICAL
) 
  69         border
.Add(sizer
, 0, wxALL
, 25) 
  71         self
.SetAutoLayout(true
) 
  74     def EvtText(self
, event
): 
  75         self
.log
.WriteText('EvtText: %s\n' % event
.GetString()) 
  78     def EvtChar(self
, event
): 
  79         self
.log
.WriteText('EvtChar: %d\n' % event
.GetKeyCode()) 
  83     def OnTestReplace(self
, evt
): 
  84         self
.tc
.Replace(5, 9, "IS A") 
  87     def OnTestGetSelection(self
, evt
): 
  88         start
, end 
= self
.tc
.GetSelection() 
  89         text 
= self
.tc
.GetValue() 
  90         if wxPlatform 
== "__WXMSW__":  # This is why GetStringSelection was added 
  91             text 
= string
.replace(text
, '\n', '\r\n') 
  92         self
.log
.write("GetSelection(): (%d, %d)\n" 
  93                        "\tGetStringSelection(): %s\n" 
  94                        "\tSelectedText: %s\n" % 
  96                         self
.tc
.GetStringSelection(), 
  97                         repr(text
[start
:end
]))) 
 100 #--------------------------------------------------------------------------- 
 102 def runTest(frame
, nb
, log
): 
 103     win 
= TestPanel(nb
, log
) 
 106 #--------------------------------------------------------------------------- 
 117 if __name__ 
== '__main__': 
 120     run
.main(['', os
.path
.basename(sys
.argv
[0])])