Python wx.Menu() Examples
The following are 30
code examples of wx.Menu().
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example.
You may also want to check out all available functions/classes of the module
wx
, or try the search function
.
Example #1
Source File: wxPython_OpenGL_GUI.py From Python-GUI-Programming-Cookbook-Second-Edition with MIT License | 6 votes |
def __init__(self, parent): wx.Panel.__init__(self, parent) menu = wx.Menu() menu.Append(wx.ID_ABOUT, "About", "wxPython GUI") menu.AppendSeparator() menu.Append(wx.ID_EXIT, "Exit", " Exit the GUI") menuBar = wx.MenuBar() menuBar.Append(menu, "File") parent.SetMenuBar(menuBar) self.textWidget = wx.TextCtrl(self, size=(280, 80), style=wx.TE_MULTILINE) button = wx.Button(self, label="Create OpenGL 3D Cube", pos=(60, 100)) self.Bind(wx.EVT_BUTTON, self.buttonCallback, button) parent.CreateStatusBar()
Example #2
Source File: wx_mpl_bars.py From code-for-blog with The Unlicense | 6 votes |
def create_menu(self): self.menubar = wx.MenuBar() menu_file = wx.Menu() m_expt = menu_file.Append(-1, "&Save plot\tCtrl-S", "Save plot to file") self.Bind(wx.EVT_MENU, self.on_save_plot, m_expt) menu_file.AppendSeparator() m_exit = menu_file.Append(-1, "E&xit\tCtrl-X", "Exit") self.Bind(wx.EVT_MENU, self.on_exit, m_exit) menu_help = wx.Menu() m_about = menu_help.Append(-1, "&About\tF1", "About the demo") self.Bind(wx.EVT_MENU, self.on_about, m_about) self.menubar.Append(menu_file, "&File") self.menubar.Append(menu_help, "&Help") self.SetMenuBar(self.menubar)
Example #3
Source File: backend_wx.py From Computable with MIT License | 6 votes |
def __init__(self, parent): wx.Button.__init__(self, parent, _NTB_AXISMENU_BUTTON, "Axes: ", style=wx.BU_EXACTFIT) self._toolbar = parent self._menu =wx.Menu() self._axisId = [] # First two menu items never change... self._allId =wx.NewId() self._invertId =wx.NewId() self._menu.Append(self._allId, "All", "Select all axes", False) self._menu.Append(self._invertId, "Invert", "Invert axes selected", False) self._menu.AppendSeparator() bind(self, wx.EVT_BUTTON, self._onMenuButton, id=_NTB_AXISMENU_BUTTON) bind(self, wx.EVT_MENU, self._handleSelectAllAxes, id=self._allId) bind(self, wx.EVT_MENU, self._handleInvertAxesSelected, id=self._invertId)
Example #4
Source File: Main.py From nodemcu-pyflasher with MIT License | 6 votes |
def _build_menu_bar(self): self.menuBar = wx.MenuBar() # File menu file_menu = wx.Menu() wx.App.SetMacExitMenuItemId(wx.ID_EXIT) exit_item = file_menu.Append(wx.ID_EXIT, "E&xit\tCtrl-Q", "Exit NodeMCU PyFlasher") exit_item.SetBitmap(images.Exit.GetBitmap()) self.Bind(wx.EVT_MENU, self._on_exit_app, exit_item) self.menuBar.Append(file_menu, "&File") # Help menu help_menu = wx.Menu() help_item = help_menu.Append(wx.ID_ABOUT, '&About NodeMCU PyFlasher', 'About') self.Bind(wx.EVT_MENU, self._on_help_about, help_item) self.menuBar.Append(help_menu, '&Help') self.SetMenuBar(self.menuBar)
Example #5
Source File: backend_wx.py From Mastering-Elasticsearch-7.0 with MIT License | 6 votes |
def __init__(self, parent): wx.Button.__init__(self, parent, wx.ID_ANY, "Axes: ", style=wx.BU_EXACTFIT) self._toolbar = parent self._menu = wx.Menu() self._axisId = [] # First two menu items never change... self._allId = wx.NewId() self._invertId = wx.NewId() self._menu.Append(self._allId, "All", "Select all axes", False) self._menu.Append(self._invertId, "Invert", "Invert axes selected", False) self._menu.AppendSeparator() self.Bind(wx.EVT_BUTTON, self._onMenuButton, id=self.GetId()) self.Bind(wx.EVT_MENU, self._handleSelectAllAxes, id=self._allId) self.Bind(wx.EVT_MENU, self._handleInvertAxesSelected, id=self._invertId)
Example #6
Source File: backend_wx.py From matplotlib-4-abaqus with MIT License | 6 votes |
def __init__(self, parent): wx.Button.__init__(self, parent, _NTB_AXISMENU_BUTTON, "Axes: ", style=wx.BU_EXACTFIT) self._toolbar = parent self._menu =wx.Menu() self._axisId = [] # First two menu items never change... self._allId =wx.NewId() self._invertId =wx.NewId() self._menu.Append(self._allId, "All", "Select all axes", False) self._menu.Append(self._invertId, "Invert", "Invert axes selected", False) self._menu.AppendSeparator() bind(self, wx.EVT_BUTTON, self._onMenuButton, id=_NTB_AXISMENU_BUTTON) bind(self, wx.EVT_MENU, self._handleSelectAllAxes, id=self._allId) bind(self, wx.EVT_MENU, self._handleInvertAxesSelected, id=self._invertId)
Example #7
Source File: Control_Frameworks.py From Python-GUI-Programming-Cookbook-Third-Edition with MIT License | 6 votes |
def wxPythonApp(): import wx app = wx.App() frame = wx.Frame(None, -1, "wxPython GUI", size=(200,150)) frame.SetBackgroundColour('white') frame.CreateStatusBar() menu= wx.Menu() menu.Append(wx.ID_ABOUT, "About", "wxPython GUI") menuBar = wx.MenuBar() menuBar.Append(menu,"File") frame.SetMenuBar(menuBar) frame.Show() runT = Thread(target=app.MainLoop) runT.setDaemon(True) runT.start() print(runT) print('createThread():', runT.isAlive())
Example #8
Source File: backend_wx.py From ImageFusion with MIT License | 6 votes |
def __init__(self, parent): wx.Button.__init__(self, parent, _NTB_AXISMENU_BUTTON, "Axes: ", style=wx.BU_EXACTFIT) self._toolbar = parent self._menu =wx.Menu() self._axisId = [] # First two menu items never change... self._allId =wx.NewId() self._invertId =wx.NewId() self._menu.Append(self._allId, "All", "Select all axes", False) self._menu.Append(self._invertId, "Invert", "Invert axes selected", False) self._menu.AppendSeparator() bind(self, wx.EVT_BUTTON, self._onMenuButton, id=_NTB_AXISMENU_BUTTON) bind(self, wx.EVT_MENU, self._handleSelectAllAxes, id=self._allId) bind(self, wx.EVT_MENU, self._handleInvertAxesSelected, id=self._invertId)
Example #9
Source File: gui.py From reading-frustum-pointnets-code with Apache License 2.0 | 6 votes |
def makeMenuBar(self): fileMenu = wx.Menu() helloItem = fileMenu.Append(-1, "&Hello...\tCtrl-H", "Help string shown in status bar for this menu item") fileMenu.AppendSeparator() exitItem = fileMenu.Append(wx.ID_EXIT) helpMenu = wx.Menu() aboutItem = helpMenu.Append(wx.ID_ABOUT) menuBar = wx.MenuBar() menuBar.Append(fileMenu, "&File") menuBar.Append(helpMenu, "Help") self.SetMenuBar(menuBar) self.Bind(wx.EVT_MENU, self.OnHello, helloItem) self.Bind(wx.EVT_MENU, self.OnExit, exitItem) self.Bind(wx.EVT_MENU, self.OnAbout, aboutItem)
Example #10
Source File: menubar.py From wxGlade with MIT License | 6 votes |
def start_elem(self, name, attrs): if name == 'menus': return if name == 'menu': self.menu_depth += 1 if self.menu_depth == 1: t = MenuTree( attrs['name'], attrs['label'], attrs.get('itemid', ''), attrs.get('help_str', ''), handler=attrs.get('handler', '') ) self.curr_menu.append( (t.root,) ) self.menus.append(t) return node = MenuTree.Node( label=attrs['label'], name=attrs['name'], id=attrs.get('itemid', ''), help_str=attrs.get('help_str', ''), handler=attrs.get('handler', '') ) cm = self.curr_menu[-1] cm[0].children.append(node) node.parent = cm[0] menu = wx.Menu() self.curr_menu.append( (node, menu) ) elif name == 'item': self.curr_item = MenuTree.Node() else: try: self.curr_index = self.itemattrs.index(name) except ValueError: # ignore unknown attributes... self.curr_index = -1 pass
Example #11
Source File: Control_Frameworks.py From Python-GUI-Programming-Cookbook-Second-Edition with MIT License | 6 votes |
def wxPythonApp(): import wx app = wx.App() frame = wx.Frame(None, -1, "wxPython GUI", size=(200,150)) frame.SetBackgroundColour('white') frame.CreateStatusBar() menu= wx.Menu() menu.Append(wx.ID_ABOUT, "About", "wxPython GUI") menuBar = wx.MenuBar() menuBar.Append(menu,"File") frame.SetMenuBar(menuBar) frame.Show() runT = Thread(target=app.MainLoop) runT.setDaemon(True) runT.start() print(runT) print('createThread():', runT.isAlive())
Example #12
Source File: wxPython_Wallpaper.py From Python-GUI-Programming-Cookbook-Second-Edition with MIT License | 6 votes |
def __init__(self, parent): wx.Panel.__init__(self, parent) imageFile = 'Tile.bmp' self.bmp = wx.Bitmap(imageFile) # react to a resize event and redraw image parent.Bind(wx.EVT_SIZE, self.canvasCallback) menu = wx.Menu() menu.Append(wx.ID_ABOUT, "About", "wxPython GUI") menu.AppendSeparator() menu.Append(wx.ID_EXIT, "Exit", " Exit the GUI") menuBar = wx.MenuBar() menuBar.Append(menu, "File") parent.SetMenuBar(menuBar) self.textWidget = wx.TextCtrl(self, size=(280, 80), style=wx.TE_MULTILINE) button = wx.Button(self, label="Create OpenGL 3D Cube", pos=(60, 100)) self.Bind(wx.EVT_BUTTON, self.buttonCallback, button) parent.CreateStatusBar()
Example #13
Source File: import_OpenGL_cube_and_cone.py From Python-GUI-Programming-Cookbook-Second-Edition with MIT License | 6 votes |
def OnInit(self): frame = wx.Frame(None, -1, "RunDemo: ", pos=(0,0), style=wx.DEFAULT_FRAME_STYLE, name="run a sample") menuBar = wx.MenuBar() menu = wx.Menu() item = menu.Append(wx.ID_EXIT, "E&xit", "Exit demo") self.Bind(wx.EVT_MENU, self.OnExitApp, item) menuBar.Append(menu, "&File") frame.SetMenuBar(menuBar) frame.Show(True) frame.Bind(wx.EVT_CLOSE, self.OnCloseFrame) win = runTest(frame) # set the frame to a good size for showing the two buttons frame.SetSize((200,400)) win.SetFocus() self.window = win frect = frame.GetRect() self.SetTopWindow(frame) self.frame = frame return True
Example #14
Source File: SimpleSCardAppFrame.py From pyscard with GNU Lesser General Public License v2.1 | 6 votes |
def OnCardRightClick(self, event): """Called when user right-clicks a node in the card tree control.""" item = event.GetItem() if item: itemdata = self.readertreepanel.cardtreectrl.GetItemPyData(item) if isinstance(itemdata, smartcard.Card.Card): self.selectedcard = itemdata if not hasattr(self, "connectID"): self.connectID = wx.NewId() self.disconnectID = wx.NewId() self.Bind(wx.EVT_MENU, self.OnConnect, id=self.connectID) self.Bind( wx.EVT_MENU, self.OnDisconnect, id=self.disconnectID) menu = wx.Menu() if not hasattr(self.selectedcard, 'connection'): menu.Append(self.connectID, "Connect") else: menu.Append(self.disconnectID, "Disconnect") self.PopupMenu(menu) menu.Destroy()
Example #15
Source File: SimpleSCardAppFrame.py From pyscard with GNU Lesser General Public License v2.1 | 6 votes |
def OnReaderRightClick(self, event): """Called when user right-clicks a node in the reader tree control.""" item = event.GetItem() if item: itemdata = self.readertreepanel.readertreectrl.GetItemPyData(item) if isinstance(itemdata, smartcard.Card.Card): self.selectedcard = itemdata if not hasattr(self, "connectID"): self.connectID = wx.NewId() self.disconnectID = wx.NewId() self.Bind(wx.EVT_MENU, self.OnConnect, id=self.connectID) self.Bind( wx.EVT_MENU, self.OnDisconnect, id=self.disconnectID) menu = wx.Menu() if not hasattr(self.selectedcard, 'connection'): menu.Append(self.connectID, "Connect") else: menu.Append(self.disconnectID, "Disconnect") self.PopupMenu(menu) menu.Destroy()
Example #16
Source File: backend_wx.py From neural-network-animation with MIT License | 6 votes |
def __init__(self, parent): wx.Button.__init__(self, parent, _NTB_AXISMENU_BUTTON, "Axes: ", style=wx.BU_EXACTFIT) self._toolbar = parent self._menu =wx.Menu() self._axisId = [] # First two menu items never change... self._allId =wx.NewId() self._invertId =wx.NewId() self._menu.Append(self._allId, "All", "Select all axes", False) self._menu.Append(self._invertId, "Invert", "Invert axes selected", False) self._menu.AppendSeparator() bind(self, wx.EVT_BUTTON, self._onMenuButton, id=_NTB_AXISMENU_BUTTON) bind(self, wx.EVT_MENU, self._handleSelectAllAxes, id=self._allId) bind(self, wx.EVT_MENU, self._handleInvertAxesSelected, id=self._invertId)
Example #17
Source File: menubar.py From wxGlade with MIT License | 6 votes |
def __init__(self, parent, owner, items=None): style = wx.DEFAULT_DIALOG_STYLE|wx.RESIZE_BORDER|wx.WANTS_CHARS wx.Dialog.__init__(self, parent, -1, _("Menu editor"), style=style) self.create_gui() self.bind_event_handlers() self._set_tooltips() self.owner = owner import re self.handler_re = self.name_re = re.compile(r'^[a-zA-Z_]+[\w-]*(\[\w*\])*$') self.selected_index = -1 # index of the selected element in the wx.ListCtrl menu_items self._ignore_events = False if items: self.add_items(items) self._select_item(0) else: self._enable_fields(False)
Example #18
Source File: objdictedit.py From CANFestivino with GNU Lesser General Public License v2.1 | 6 votes |
def _init_utils(self): self.MenuBar = wx.MenuBar() self.MenuBar.SetEvtHandlerEnabled(True) if self.ModeSolo: self.FileMenu = wx.Menu(title='') self.EditMenu = wx.Menu(title='') self.AddMenu = wx.Menu(title='') self.HelpMenu = wx.Menu(title='') self._init_coll_MenuBar_Menus(self.MenuBar) if self.ModeSolo: self._init_coll_FileMenu_Items(self.FileMenu) self._init_coll_EditMenu_Items(self.EditMenu) self._init_coll_AddMenu_Items(self.AddMenu) self._init_coll_HelpMenu_Items(self.HelpMenu)
Example #19
Source File: backend_wx.py From GraphicDesignPatternByPython with MIT License | 6 votes |
def __init__(self, parent): wx.Button.__init__(self, parent, _NTB_AXISMENU_BUTTON, "Axes: ", style=wx.BU_EXACTFIT) self._toolbar = parent self._menu = wx.Menu() self._axisId = [] # First two menu items never change... self._allId = wx.NewId() self._invertId = wx.NewId() self._menu.Append(self._allId, "All", "Select all axes", False) self._menu.Append(self._invertId, "Invert", "Invert axes selected", False) self._menu.AppendSeparator() self.Bind(wx.EVT_BUTTON, self._onMenuButton, id=_NTB_AXISMENU_BUTTON) self.Bind(wx.EVT_MENU, self._handleSelectAllAxes, id=self._allId) self.Bind(wx.EVT_MENU, self._handleInvertAxesSelected, id=self._invertId)
Example #20
Source File: networkedit.py From CANFestivino with GNU Lesser General Public License v2.1 | 6 votes |
def _init_utils(self): self.MenuBar = wx.MenuBar() self.MenuBar.SetEvtHandlerEnabled(True) if self.ModeSolo: self.FileMenu = wx.Menu(title='') self.NetworkMenu = wx.Menu(title='') self.EditMenu = wx.Menu(title='') self.AddMenu = wx.Menu(title='') self.HelpMenu = wx.Menu(title='') self._init_coll_MenuBar_Menus(self.MenuBar) if self.ModeSolo: self._init_coll_FileMenu_Items(self.FileMenu) self._init_coll_NetworkMenu_Items(self.NetworkMenu) self._init_coll_EditMenu_Items(self.EditMenu) self._init_coll_AddMenu_Items(self.AddMenu) self._init_coll_HelpMenu_Items(self.HelpMenu)
Example #21
Source File: backend_wx.py From python3_ios with BSD 3-Clause "New" or "Revised" License | 6 votes |
def __init__(self, parent): wx.Button.__init__(self, parent, _NTB_AXISMENU_BUTTON, "Axes: ", style=wx.BU_EXACTFIT) self._toolbar = parent self._menu = wx.Menu() self._axisId = [] # First two menu items never change... self._allId = wx.NewId() self._invertId = wx.NewId() self._menu.Append(self._allId, "All", "Select all axes", False) self._menu.Append(self._invertId, "Invert", "Invert axes selected", False) self._menu.AppendSeparator() self.Bind(wx.EVT_BUTTON, self._onMenuButton, id=_NTB_AXISMENU_BUTTON) self.Bind(wx.EVT_MENU, self._handleSelectAllAxes, id=self._allId) self.Bind(wx.EVT_MENU, self._handleInvertAxesSelected, id=self._invertId)
Example #22
Source File: gui.py From four_flower with MIT License | 6 votes |
def makeMenuBar(self): fileMenu = wx.Menu() helloItem = fileMenu.Append(-1, "&Hello...\tCtrl-H", "Help string shown in status bar for this menu item") fileMenu.AppendSeparator() exitItem = fileMenu.Append(wx.ID_EXIT) helpMenu = wx.Menu() aboutItem = helpMenu.Append(wx.ID_ABOUT) menuBar = wx.MenuBar() menuBar.Append(fileMenu, "&File") menuBar.Append(helpMenu, "Help") self.SetMenuBar(menuBar) self.Bind(wx.EVT_MENU, self.OnHello, helloItem) self.Bind(wx.EVT_MENU, self.OnExit, exitItem) self.Bind(wx.EVT_MENU, self.OnAbout, aboutItem)
Example #23
Source File: tray.py From superpaper with MIT License | 6 votes |
def CreatePopupMenu(self): """Method called by WX library when user right clicks tray icon. Opens tray menu.""" menu = wx.Menu() create_menu_item(menu, "Open Config Folder", self.open_config) create_menu_item(menu, "Wallpaper Configuration", self.configure_wallpapers) create_menu_item(menu, "Settings", self.configure_settings) create_menu_item(menu, "Reload Profiles", self.reload_profiles) menu.AppendSeparator() for item in self.list_of_profiles: create_menu_item(menu, item.name, self.start_profile, item) menu.AppendSeparator() create_menu_item(menu, "Next Wallpaper", self.next_wallpaper) self.pause_item = create_menu_item( menu, "Pause Timer", self.pause_timer, kind=wx.ITEM_CHECK) self.pause_item.Check(self.is_paused) menu.AppendSeparator() create_menu_item(menu, 'About', self.on_about) create_menu_item(menu, 'Exit', self.on_exit) return menu
Example #24
Source File: systray.py From p2ptv-pi with MIT License | 6 votes |
def __init__(self, wxapp, bgapp, iconfilename): wx.TaskBarIcon.__init__(self) self.bgapp = bgapp self.wxapp = wxapp self.icons = wx.IconBundle() self.icon = wx.Icon(iconfilename, wx.BITMAP_TYPE_ICO) self.icons.AddIcon(self.icon) self.Bind(wx.EVT_TASKBAR_LEFT_UP, self.OnLeftClicked) if sys.platform != 'darwin': self.SetIcon(self.icon, self.bgapp.appname) else: menuBar = wx.MenuBar() filemenu = wx.Menu() item = filemenu.Append(-1, 'E&xit', 'Terminate the program') self.Bind(wx.EVT_MENU, self.OnExit, item) wx.App.SetMacExitMenuItemId(item.GetId())
Example #25
Source File: systray.py From p2ptv-pi with MIT License | 6 votes |
def CreatePopupMenu(self): menu = wx.Menu() mi = menu.Append(wx.ID_ANY, self.bgapp.utility.lang.get('options_etc')) self.Bind(wx.EVT_MENU, self.OnOptions, id=mi.GetId()) menu.AppendSeparator() if self.bgapp.user_profile is not None: mi = menu.Append(wx.ID_ANY, self.bgapp.utility.lang.get('user_profile')) self.Bind(wx.EVT_MENU, self.OnUserProfile, id=mi.GetId()) menu.AppendSeparator() mi = menu.Append(wx.ID_ANY, self.bgapp.utility.lang.get('create_stream')) self.Bind(wx.EVT_MENU, self.OnStream, id=mi.GetId()) menu.AppendSeparator() if DEBUG: mi = menu.Append(wx.ID_ANY, 'Statistics') self.Bind(wx.EVT_MENU, self.OnStat, id=mi.GetId()) menu.AppendSeparator() if DEBUG_LIVE: mi = menu.Append(wx.ID_ANY, 'Live') self.Bind(wx.EVT_MENU, self.OnLive, id=mi.GetId()) menu.AppendSeparator() mi = menu.Append(wx.ID_ANY, self.bgapp.utility.lang.get('menuexit')) self.Bind(wx.EVT_MENU, self.OnExitClient, id=mi.GetId()) return menu
Example #26
Source File: misc.py From wxGlade with MIT License | 5 votes |
def __init__(self, title): wx.Menu.__init__(self) self.TITLE_ID = wx.NewId() item = self.Append(self.TITLE_ID, title) self.AppendSeparator() font = item.GetFont() font.SetWeight(wx.BOLD) item.SetFont( wx.Font(font.GetPointSize(), font.GetFamily(), font.GetStyle(), wx.BOLD) )
Example #27
Source File: subindextable.py From CANFestivino with GNU Lesser General Public License v2.1 | 5 votes |
def OnCallbackCheck(self, event): if self.Editable: index = self.Table.GetCurrentIndex() self.Manager.SetCurrentEntryCallbacks(index, self.CallbackCheck.GetValue()) self.ParentWindow.RefreshBufferState() wx.CallAfter(self.RefreshTable) event.Skip() #------------------------------------------------------------------------------- # Contextual Menu functions #-------------------------------------------------------------------------------
Example #28
Source File: __init__.py From BitTorrent with GNU General Public License v3.0 | 5 votes |
def __init__(self, *a, **k): wx.Menu.__init__(self, *a, **k)
Example #29
Source File: ListCtrl.py From BitTorrent with GNU General Public License v3.0 | 5 votes |
def __init__(self, parent): wx.ListCtrl.__init__(self, parent, wx.ID_ANY, style=wx.LC_REPORT) ContextMenuMixin.__init__(self) self.il = wx.ImageList(self.icon_size, self.icon_size) # TODO: use a real icon self.il.Add(self.draw_blank()) self.il.Add(self.draw_sort_arrow('up')) self.il.Add(self.draw_sort_arrow('down')) self.SetImageList(self.il, wx.IMAGE_LIST_SMALL) self.update_enabled_columns() for i, name in enumerate(self.enabled_columns): column = self.columns[name] column.SetColumn(i) self.InsertColumnItem(i, column) self.itemData_to_row = {} self.index_to_itemData = {} self.selected_column = None self.SelectColumn(self.enabled_columns[0]) cmenu = wx.Menu() for name in self.column_order: column = self.columns[name] id = wx.NewId() cmenu.AppendCheckItem(id, column.GetText()) cmenu.Check(id, column.enabled) self.Bind(wx.EVT_MENU, lambda e, c=column, id=id: self.toggle_column(c, id, e), id=id) self.SetColumnContextMenu(cmenu) ColumnSorterMixin.__init__(self, len(self.enabled_columns)) self._last_scrollpos = 0 if sys.platform != "darwin": self.Bind(wx.EVT_ERASE_BACKGROUND, self.OnEraseBackground) self.default_rect = wx.Rect(0,0)
Example #30
Source File: bomsaway.py From Boms-Away with GNU General Public License v3.0 | 5 votes |
def _create_menu(self): menubar = wx.MenuBar() file = wx.Menu() edit = wx.Menu() help = wx.Menu() file.Append(wx.ID_OPEN, '&Open', 'Open a schematic') file.Append(wx.ID_SAVE, '&Save', 'Save the schematic') file.AppendSeparator() file.Append(103, '&Export BOM as CSV', 'Export the BOM as CSV') file.AppendSeparator() # Create a new submenu for recent files recent = wx.Menu() file.AppendSubMenu(recent, 'Recent') self.filehistory.UseMenu(recent) self.filehistory.AddFilesToMenu() file.AppendSeparator() quit = wx.MenuItem(file, 105, '&Quit\tCtrl+Q', 'Quit the Application') file.AppendItem(quit) edit.Append(201, 'Consolidate Components', 'Consolidate duplicated components') menubar.Append(file, '&File') menubar.Append(edit, '&Edit') menubar.Append(help, '&Help') self.SetMenuBar(menubar) self.Bind(wx.EVT_MENU, self.on_quit, id=105) self.Bind(wx.EVT_MENU, self.on_open, id=wx.ID_OPEN) self.Bind(wx.EVT_MENU, self.on_consolidate, id=201) self.Bind(wx.EVT_MENU, self.on_export, id=103) self.Bind(wx.EVT_MENU, self.on_save, id=wx.ID_SAVE) self.Bind(wx.EVT_MENU_RANGE, self.on_file_history, id=wx.ID_FILE1, id2=wx.ID_FILE9)