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