]>
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
) 
  73         bsizer 
= wx
.BoxSizer(wx
.VERTICAL
) 
  74         bsizer
.Add(b
, 0, wx
.GROW|wx
.ALL
, 4) 
  75         bsizer
.Add(b2
, 0, wx
.GROW|wx
.ALL
, 4) 
  76         bsizer
.Add(b3
, 0, wx
.GROW|wx
.ALL
, 4) 
  78         sizer 
= wx
.FlexGridSizer(cols
=3, hgap
=6, vgap
=6) 
  79         sizer
.AddMany([ l1
, t1
, (0,0), 
  85         border 
= wx
.BoxSizer(wx
.VERTICAL
) 
  86         border
.Add(sizer
, 0, wx
.ALL
, 25) 
  88         self
.SetAutoLayout(True) 
  91     def EvtText(self
, event
): 
  92         self
.log
.WriteText('EvtText: %s\n' % event
.GetString()) 
  95     def EvtChar(self
, event
): 
  96         self
.log
.WriteText('EvtChar: %d\n' % event
.GetKeyCode()) 
 100     def OnTestReplace(self
, evt
): 
 101         self
.tc
.Replace(5, 9, "IS A") 
 102         #self.tc.Remove(5, 9) 
 104     def OnTestWriteText(self
, evt
): 
 105         self
.tc
.WriteText("TEXT") 
 107     def OnTestGetSelection(self
, evt
): 
 108         start
, end 
= self
.tc
.GetSelection() 
 109         text 
= self
.tc
.GetValue() 
 110         if wx
.Platform 
== "__WXMSW__":  # This is why GetStringSelection was added 
 111             text 
= text
.replace('\n', '\r\n') 
 113         self
.log
.write("multi-line GetSelection(): (%d, %d)\n" 
 114                        "\tGetStringSelection(): %s\n" 
 115                        "\tSelectedText: %s\n" % 
 117                         self
.tc
.GetStringSelection(), 
 118                         repr(text
[start
:end
]))) 
 120         start
, end 
= self
.tc1
.GetSelection() 
 121         text 
= self
.tc1
.GetValue() 
 123         if wx
.Platform 
== "__WXMSW__":  # This is why GetStringSelection was added 
 124             text 
= text
.replace('\n', '\r\n') 
 126         self
.log
.write("single-line GetSelection(): (%d, %d)\n" 
 127                        "\tGetStringSelection(): %s\n" 
 128                        "\tSelectedText: %s\n" % 
 130                         self
.tc1
.GetStringSelection(), 
 131                         repr(text
[start
:end
]))) 
 134     def OnT5LeftDown(self
, evt
): 
 136         wx
.CallAfter(self
.LogT5Position
, evt
) 
 138     def LogT5Position(self
, evt
): 
 139         text 
= self
.t5
.GetValue() 
 140         ip 
= self
.t5
.GetInsertionPoint() 
 141         lp 
= self
.t5
.GetLastPosition() 
 142         self
.log
.write("LogT5Position:\n" 
 143                        "\tGetInsertionPoint:\t%d\n" 
 144                        "\ttext[insertionpoint]:\t%s\n" 
 145                        "\tGetLastPosition:\t%d\n" 
 146                        "\tlen(text):\t\t%d\n" 
 147                        % (ip
, text
[ip
], lp
, len(text
))) 
 150 #--------------------------------------------------------------------------- 
 152 def runTest(frame
, nb
, log
): 
 153     win 
= TestPanel(nb
, log
) 
 156 #--------------------------------------------------------------------------- 
 160 A TextCtrl allows text to be displayed and (possibly) edited. It may be single  
 161 line or multi-line, support styles or not, be read-only or not, and even supports 
 162 text masking for such things as passwords. 
 168 if __name__ 
== '__main__': 
 171     run
.main(['', os
.path
.basename(sys
.argv
[0])])