]>
git.saurik.com Git - wxWidgets.git/blob - wxPython/demo/TextCtrl.py
   5 #--------------------------------------------------------------------------- 
   7 class TestPanel(wx
.Panel
): 
   8     def OnSetFocus(self
, evt
): 
  11     def OnKillFocus(self
, evt
): 
  14     def OnWindowDestroy(self
, evt
): 
  15         print "OnWindowDestroy" 
  19     def __init__(self
, parent
, log
): 
  20         wx
.Panel
.__init
__(self
, parent
, -1) 
  23         l1 
= wx
.StaticText(self
, -1, "wx.TextCtrl") 
  24         t1 
= wx
.TextCtrl(self
, -1, "Test it out and see", size
=(125, -1)) 
  25         t1
.SetInsertionPoint(0) 
  28         self
.Bind(wx
.EVT_TEXT
, self
.EvtText
, t1
) 
  29         t1
.Bind(wx
.EVT_CHAR
, self
.EvtChar
) 
  30         t1
.Bind(wx
.EVT_SET_FOCUS
, self
.OnSetFocus
) 
  31         t1
.Bind(wx
.EVT_KILL_FOCUS
, self
.OnKillFocus
) 
  32         t1
.Bind(wx
.EVT_WINDOW_DESTROY
, self
.OnWindowDestroy
) 
  34         l2 
= wx
.StaticText(self
, -1, "Password") 
  35         t2 
= wx
.TextCtrl(self
, -1, "", size
=(125, -1), style
=wx
.TE_PASSWORD
) 
  36         self
.Bind(wx
.EVT_TEXT
, self
.EvtText
, t2
) 
  38         l3 
= wx
.StaticText(self
, -1, "Multi-line") 
  39         t3 
= wx
.TextCtrl(self
, -1, 
  40                         "Here is a looooooooooooooong line of text set in the control.\n\n" 
  41                         "The quick brown fox jumped over the lazy dog...", 
  42                        size
=(200, 100), style
=wx
.TE_MULTILINE
) 
  44         t3
.SetInsertionPoint(0) 
  45         self
.Bind(wx
.EVT_TEXT
, self
.EvtText
, t3
) 
  46         b 
= wx
.Button(self
, -1, "Test Replace") 
  47         self
.Bind(wx
.EVT_BUTTON
, self
.OnTestReplace
, b
) 
  48         b2 
= wx
.Button(self
, -1, "Test GetSelection") 
  49         self
.Bind(wx
.EVT_BUTTON
, self
.OnTestGetSelection
, b2
) 
  50         b3 
= wx
.Button(self
, -1, "Test WriteText") 
  51         self
.Bind(wx
.EVT_BUTTON
, self
.OnTestWriteText
, b3
) 
  55         l4 
= wx
.StaticText(self
, -1, "Rich Text") 
  56         t4 
= wx
.TextCtrl(self
, -1, "If supported by the native control, this is red, and this is a different font.", 
  57                         size
=(200, 100), style
=wx
.TE_MULTILINE|wx
.TE_RICH2
) 
  58         t4
.SetInsertionPoint(0) 
  59         t4
.SetStyle(44, 47, wx
.TextAttr("RED", "YELLOW")) 
  60         points 
= t4
.GetFont().GetPointSize()  # get the current size 
  61         f 
= wx
.Font(points
+3, wx
.ROMAN
, wx
.ITALIC
, wx
.BOLD
, True) 
  62         t4
.SetStyle(63, 77, wx
.TextAttr("BLUE", wx
.NullColour
, f
)) 
  64         l5 
= wx
.StaticText(self
, -1, "Test Positions") 
  65         t5 
= wx
.TextCtrl(self
, -1, "0123456789\n" * 5, size
=(200, 100), 
  66                         style 
= wx
.TE_MULTILINE
 
  70         t5
.Bind(wx
.EVT_LEFT_DOWN
, self
.OnT5LeftDown
) 
  74         bsizer 
= wx
.BoxSizer(wx
.VERTICAL
) 
  75         bsizer
.Add(b
, 0, wx
.GROW|wx
.ALL
, space
) 
  76         bsizer
.Add(b2
, 0, wx
.GROW|wx
.ALL
, space
) 
  77         bsizer
.Add(b3
, 0, wx
.GROW|wx
.ALL
, space
) 
  79         sizer 
= wx
.FlexGridSizer(cols
=3, hgap
=space
, vgap
=space
) 
  80         sizer
.AddMany([ l1
, t1
, (0,0), 
  86         border 
= wx
.BoxSizer(wx
.VERTICAL
) 
  87         border
.Add(sizer
, 0, wx
.ALL
, 25) 
  89         self
.SetAutoLayout(True) 
  92     def EvtText(self
, event
): 
  93         self
.log
.WriteText('EvtText: %s\n' % event
.GetString()) 
  96     def EvtChar(self
, event
): 
  97         self
.log
.WriteText('EvtChar: %d\n' % event
.GetKeyCode()) 
 101     def OnTestReplace(self
, evt
): 
 102         self
.tc
.Replace(5, 9, "IS A") 
 103         #self.tc.Remove(5, 9) 
 105     def OnTestWriteText(self
, evt
): 
 106         self
.tc
.WriteText("TEXT") 
 108     def OnTestGetSelection(self
, evt
): 
 109         start
, end 
= self
.tc
.GetSelection() 
 110         text 
= self
.tc
.GetValue() 
 111         if wx
.Platform 
== "__WXMSW__":  # This is why GetStringSelection was added 
 112             text 
= text
.replace('\n', '\r\n') 
 114         self
.log
.write("multi-line GetSelection(): (%d, %d)\n" 
 115                        "\tGetStringSelection(): %s\n" 
 116                        "\tSelectedText: %s\n" % 
 118                         self
.tc
.GetStringSelection(), 
 119                         repr(text
[start
:end
]))) 
 121         start
, end 
= self
.tc1
.GetSelection() 
 122         text 
= self
.tc1
.GetValue() 
 124         if wx
.Platform 
== "__WXMSW__":  # This is why GetStringSelection was added 
 125             text 
= text
.replace('\n', '\r\n') 
 127         self
.log
.write("single-line GetSelection(): (%d, %d)\n" 
 128                        "\tGetStringSelection(): %s\n" 
 129                        "\tSelectedText: %s\n" % 
 131                         self
.tc1
.GetStringSelection(), 
 132                         repr(text
[start
:end
]))) 
 135     def OnT5LeftDown(self
, evt
): 
 137         wx
.CallAfter(self
.LogT5Position
, evt
) 
 139     def LogT5Position(self
, evt
): 
 140         text 
= self
.t5
.GetValue() 
 141         ip 
= self
.t5
.GetInsertionPoint() 
 142         lp 
= self
.t5
.GetLastPosition() 
 143         self
.log
.write("LogT5Position:\n" 
 144                        "\tGetInsertionPoint:\t%d\n" 
 145                        "\ttext[insertionpoint]:\t%s\n" 
 146                        "\tGetLastPosition:\t%d\n" 
 147                        "\tlen(text):\t\t%d\n" 
 148                        % (ip
, text
[ip
], lp
, len(text
))) 
 151 #--------------------------------------------------------------------------- 
 153 def runTest(frame
, nb
, log
): 
 154     win 
= TestPanel(nb
, log
) 
 157 #--------------------------------------------------------------------------- 
 161 A TextCtrl allows text to be displayed and (possibly) edited. It may be single  
 162 line or multi-line, support styles or not, be read-only or not, and even supports 
 163 text masking for such things as passwords. 
 169 if __name__ 
== '__main__': 
 172     run
.main(['', os
.path
.basename(sys
.argv
[0])] + sys
.argv
[1:])