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
, -1, "Test it out and see", size
=(125, -1))
24 t1
.SetInsertionPoint(0)
26 EVT_TEXT(self
, t1
.GetId(), self
.EvtText
)
27 EVT_CHAR(t1
, self
.EvtChar
)
28 EVT_SET_FOCUS(t1
, self
.OnSetFocus
)
29 EVT_KILL_FOCUS(t1
, self
.OnKillFocus
)
30 EVT_WINDOW_DESTROY(t1
, self
.OnWindowDestroy
)
32 l2
= wxStaticText(self
, -1, "Passsword")
33 t2
= wxTextCtrl(self
, -1, "", size
=(125, -1), style
=wxTE_PASSWORD
)
34 EVT_TEXT(self
, t2
.GetId(), self
.EvtText
)
36 l3
= wxStaticText(self
, -1, "Multi-line")
37 t3
= wxTextCtrl(self
, -1,
38 "Here is a looooooooooooooong line of text set in the control.\n\n"
39 "The quick brown fox jumped over the lazy dog...",
40 size
=(200, 100), style
=wxTE_MULTILINE
)
41 t3
.SetInsertionPoint(0)
42 EVT_TEXT(self
, t3
.GetId(), self
.EvtText
)
43 b
= wxButton(self
, -1, "Test Replace")
44 EVT_BUTTON(self
, b
.GetId(), self
.OnTestReplace
)
45 b2
= wxButton(self
, -1, "Test GetSelection")
46 EVT_BUTTON(self
, b2
.GetId(), self
.OnTestGetSelection
)
47 b3
= wxButton(self
, -1, "Test WriteText")
48 EVT_BUTTON(self
, b3
.GetId(), self
.OnTestWriteText
)
50 b4
= wxButton(self
, -1, "Test Simulated Event")
51 EVT_BUTTON(self
, b4
.GetId(), self
.OnTestEvent
)
54 l4
= wxStaticText(self
, -1, "Rich Text")
55 t4
= wxTextCtrl(self
, -1, "If supported by the native control, this is red, and this is a different font.",
56 size
=(200, 100), style
=wxTE_MULTILINE|wxTE_RICH2
)
57 t4
.SetInsertionPoint(0)
58 t4
.SetStyle(44, 47, wxTextAttr("RED", "YELLOW"))
59 points
= t4
.GetFont().GetPointSize() # get the current size
60 f
= wxFont(points
+3, wxROMAN
, wxITALIC
, wxBOLD
, True)
61 t4
.SetStyle(63, 77, wxTextAttr("BLUE", wxNullColour
, f
))
63 l5
= wxStaticText(self
, -1, "Test Positions")
64 t5
= wxTextCtrl(self
, -1, "0123456789\n" * 5, size
=(200, 100),
65 style
= wxTE_MULTILINE
69 EVT_LEFT_DOWN(t5
, self
.OnT5LeftDown
)
73 bsizer
= wxBoxSizer(wxVERTICAL
)
74 bsizer
.Add(b
, 0, wxGROW|wxALL
, 4)
75 bsizer
.Add(b2
, 0, wxGROW|wxALL
, 4)
76 bsizer
.Add(b3
, 0, wxGROW|wxALL
, 4)
77 bsizer
.Add(b4
, 0, wxGROW|wxALL
, 4)
79 sizer
= wxFlexGridSizer(cols
=3, hgap
=6, vgap
=6)
80 sizer
.AddMany([ l1
, t1
, (0,0),
86 border
= wxBoxSizer(wxVERTICAL
)
87 border
.Add(sizer
, 0, wxALL
, 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 wxPlatform
== "__WXMSW__": # This is why GetStringSelection was added
112 text
= text
.replace('\n', '\r\n')
113 self
.log
.write("GetSelection(): (%d, %d)\n"
114 "\tGetStringSelection(): %s\n"
115 "\tSelectedText: %s\n" %
117 self
.tc
.GetStringSelection(),
118 repr(text
[start
:end
])))
120 def OnT5LeftDown(self
, evt
):
122 wxCallAfter(self
.LogT5Position
, evt
)
124 def LogT5Position(self
, evt
):
125 text
= self
.t5
.GetValue()
126 ip
= self
.t5
.GetInsertionPoint()
127 lp
= self
.t5
.GetLastPosition()
128 self
.log
.write("LogT5Position:\n"
129 "\tGetInsertionPoint:\t%d\n"
130 "\ttext[insertionpoint]:\t%s\n"
131 "\tGetLastPosition:\t%d\n"
132 "\tlen(text):\t\t%d\n"
133 % (ip
, text
[ip
], lp
, len(text
)))
136 def OnTestEvent(self
, evt
):
137 ke
= wxKeyEvent(wxEVT_CHAR
)
138 ke
.SetEventObject(self
.tc1
)
139 ke
.SetId(self
.tc1
.GetId())
140 ke
.m_keyCode
= ord('A')
141 self
.tc1
.GetEventHandler().ProcessEvent(ke
)
144 #---------------------------------------------------------------------------
146 def runTest(frame
, nb
, log
):
147 win
= TestPanel(nb
, log
)
150 #---------------------------------------------------------------------------
161 if __name__
== '__main__':
164 run
.main(['', os
.path
.basename(sys
.argv
[0])])