]>
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])])