import wx import pprint class MenuGenerator(wx.Menu, wx.Frame): def __init__(self): wx.Menu.__init__(self) self.menuDict = {} self.menuBar = wx.MenuBar() def GetMenuBar(self): return self.menuBar def NewTopMenu(self, newMenu): menu = wx.Menu() self.menuDict[newMenu] = { "menu": menu, "parent": self.menuBar, } return menu def NewMenu(self, parent, newMenu, status=None, handler=None, image=None): menu = wx.Menu() self.menuDict[newMenu] = { "name": newMenu, "menu": wx.Menu(), "parent": parent, "status": status, "handler": handler, "image": image, } return menu def ConstructMenu(self): for menu, values in self.menuDict.items(): if values["parent"] == self.menuBar: self.menuBar.Append(values["menu"], menu) else: if values["image"] is not None: menuItem = wx.MenuItem(values["menu"], wx.NewId(),values["name"], values["status"]) menuItem.SetBitmap(wx.Image(values["image"], wx.BITMAP_TYPE_PNG).ConvertToBitmap()) values["parent"].AppendItem(menuItem) else: menuItem = values["parent"].Append(wx.NewId(), values["name"], values["status"]) if values["handler"] is not None: # problems here. It doesn't work! self.Bind(wx.EVT_MENU, values["handler"], menuItem) def Print(self): pprint.pprint(self.menuDict)