2 from wxPython
.wx
import *
6 #---------------------------------------------------------------------------
8 class CustomStatusBar(wxStatusBar
):
9 def __init__(self
, parent
, log
):
10 wxStatusBar
.__init
__(self
, parent
, -1)
11 self
.SetFieldsCount(3)
13 self
.sizeChanged
= False
14 EVT_SIZE(self
, self
.OnSize
)
15 EVT_IDLE(self
, self
.OnIdle
)
17 self
.SetStatusText("A Custom StatusBar...", 0)
19 self
.cb
= wxCheckBox(self
, 1001, "toggle clock")
20 EVT_CHECKBOX(self
, 1001, self
.OnToggleClock
)
21 self
.cb
.SetValue(True)
23 # set the initial position of the checkbox
27 self
.timer
= wxPyTimer(self
.Notify
)
28 self
.timer
.Start(1000)
34 t
= time
.localtime(time
.time())
35 st
= time
.strftime("%d-%b-%Y %I:%M:%S", t
)
36 self
.SetStatusText(st
, 2)
37 self
.log
.WriteText("tick...\n")
40 # the checkbox was clicked
41 def OnToggleClock(self
, event
):
42 if self
.cb
.GetValue():
43 self
.timer
.Start(1000)
49 def OnSize(self
, evt
):
50 self
.Reposition() # for normal size events
52 # Set a flag so the idle time handler will also do the repositioning.
53 # It is done this way to get around a buglet where GetFieldRect is not
54 # accurate during the EVT_SIZE resulting from a frame maximize.
55 self
.sizeChanged
= True
58 def OnIdle(self
, evt
):
63 # reposition the checkbox
65 rect
= self
.GetFieldRect(1)
66 self
.cb
.SetPosition(wxPoint(rect
.x
+2, rect
.y
+2))
67 self
.cb
.SetSize(wxSize(rect
.width
-4, rect
.height
-4))
68 self
.sizeChanged
= False
72 class TestCustomStatusBar(wxFrame
):
73 def __init__(self
, parent
, log
):
74 wxFrame
.__init
__(self
, parent
, -1, 'Test Custom StatusBar')
75 #wxWindow(self, -1).SetBackgroundColour(wxNamedColour("WHITE"))
77 self
.sb
= CustomStatusBar(self
, log
)
78 self
.SetStatusBar(self
.sb
)
79 tc
= wxTextCtrl(self
, -1, "", style
=wxTE_READONLY|wxTE_MULTILINE
)
81 self
.SetSize((500, 300))
82 EVT_CLOSE(self
, self
.OnCloseWindow
)
84 def OnCloseWindow(self
, event
):
89 #---------------------------------------------------------------------------
91 def runTest(frame
, nb
, log
):
92 win
= TestCustomStatusBar(frame
, log
)
96 #---------------------------------------------------------------------------
107 A status bar is a narrow window that can be placed along the bottom of
108 a frame to give small amounts of status information. It can contain
109 one or more fields, one or more of which can be variable length
110 according to the size of the window. """
116 if __name__
== '__main__':
119 run
.main(['', os
.path
.basename(sys
.argv
[0])])