1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83
|
import wx
import os.path
ID_OPEN = wx.NewId()
class Toolbar(wx.Panel):
def __init__(self, parent, id=wx.ID_ANY, pos=wx.DefaultPosition, size=wx.DefaultSize):
wx.Panel.__init__(self, parent, id, pos, size, wx.TAB_TRAVERSAL)
self.bxs = wx.BoxSizer(wx.HORIZONTAL)
self.SetSizer(self.bxs)
def AddControl(self, control, proportion=0):
self.bxs.Add(control, proportion, wx.ALL | wx.ALIGN_CENTER_VERTICAL, 2)
def AddSeparator(self):
self.bxs.Add(wx.StaticLine(self, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.LI_VERTICAL), 0, wx.EXPAND | wx.LEFT | wx.RIGHT, 4)
def AddSpacer(self, size=1):
self.bxs.AddSpacer(size)
def AddTool(self, id, label, bitmap):
btn = wx.BitmapButton(self, id, bitmap, wx.DefaultPosition, wx.DefaultSize)
self.bxs.Add(btn, 0, wx.ALIGN_CENTER_VERTICAL | wx.TOP | wx.BOTTOM, 2)
self.Bind(wx.EVT_BUTTON, self.OnToolClick, btn)
def OnToolClick(self, event):
self.GetParent().Notify(u'OnToolClick \n\n id = ' + str(event.GetId()))
evt = wx.MenuEvent(0, event.GetId())
self.GetParent().GetEventHandler().ProcessEvent(evt)
class MainFrame(wx.Frame):
def __init__(self):
wx.Frame.__init__(self, None, wx.ID_ANY, u'test toolbar', wx.DefaultPosition, wx.Size(640,480), wx.DEFAULT_FRAME_STYLE)
self._CreateMenu()
self._CreateToolBar()
self._BindEvents()
self._mainPanel = wx.Panel(self)
bxs = wx.BoxSizer(wx.VERTICAL)
bxs.Add(self._tlb, 0, wx.EXPAND)
bxs.Add(wx.StaticLine(self, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.LI_HORIZONTAL), 0, wx.EXPAND)
bxs.Add(self._mainPanel, 1, wx.EXPAND)
self.SetSizer(bxs)
def _BindEvents(self):
self.Bind(wx.EVT_MENU, self.OnOpenMenu, id = ID_OPEN)
def _CreateMenu(self):
self.mnb = wx.MenuBar(0)
mnuFile = wx.Menu()
self.mnb.Append(mnuFile, u'File')
mniOpen = wx.MenuItem(mnuFile, ID_OPEN, u'Open\tCtrl+O' , u'Open', wx.ITEM_NORMAL)
mnuFile.AppendItem(mniOpen)
self.SetMenuBar(self.mnb)
def _CreateToolBar(self):
self._tlb = Toolbar(self)
sz = 16
self._tlb.AddTool(ID_OPEN, u'Open', wx.Bitmap(os.path.join(u'icons', str(sz), u'open.png'), wx.BITMAP_TYPE_PNG))
#
self._tlb.AddSpacer(4)
self._cmbAdressBar = wx.ComboBox(self._tlb, wx.ID_ANY, u'', wx.DefaultPosition, wx.DefaultSize, [], wx.CB_DROPDOWN | wx.TE_PROCESS_ENTER)
self._tlb.AddControl(self._cmbAdressBar, 1)
def Notify(self, message, extrastyle=0):
wx.MessageDialog(self, str(message), u'Notification', wx.OK | extrastyle).ShowModal()
def OnOpenMenu(self, event):
self.Notify(u'OnOpenMenu \n\n id = ' + str(event.GetId()))
class TheApp(wx.App):
def OnInit(self):
self._mainFrame = MainFrame()
self._mainFrame.Show()
self.SetTopWindow(self._mainFrame)
return True
if __name__ == '__main__':
app = TheApp(redirect = True, filename = 'stdout.log')
app.MainLoop() |
Partager