# Make a File menu
self.mainmenu = wx.MenuBar()
menu = wx.Menu()
- exitID = wx.NewId()
- menu.Append(exitID, 'E&xit\tAlt-X', 'Get the heck outta here!')
- self.Bind(wx.EVT_MENU, self.OnFileExit, id=exitID)
- wx.App_SetMacExitMenuItemId(exitID)
+ item = menu.Append(-1, 'E&xit\tAlt-X', 'Get the heck outta here!')
+ self.Bind(wx.EVT_MENU, self.OnFileExit, item)
+ wx.App_SetMacExitMenuItemId(item.GetId())
self.mainmenu.Append(menu, '&File')
# Make a Demo menu
for item in _treeList:
submenu = wx.Menu()
for childItem in item[1]:
- mID = wx.NewId()
- submenu.Append(mID, childItem)
- self.Bind(wx.EVT_MENU, self.OnDemoMenu, id=mID)
+ mi = submenu.Append(-1, childItem)
+ self.Bind(wx.EVT_MENU, self.OnDemoMenu, mi)
menu.AppendMenu(wx.NewId(), item[0], submenu)
self.mainmenu.Append(menu, '&Demo')
findID = wx.NewId()
findnextID = wx.NewId()
menu = wx.Menu()
- menu.Append(findID, '&Find\tCtrl-F', 'Find in the Demo Code')
- menu.Append(findnextID, 'Find &Next\tF3', 'Find Next')
+ findItem = menu.Append(-1, '&Find\tCtrl-F', 'Find in the Demo Code')
+ findnextItem = menu.Append(-1, 'Find &Next\tF3', 'Find Next')
menu.AppendSeparator()
- menu.Append(helpID, '&About\tCtrl-H', 'wxPython RULES!!!')
- wx.App_SetMacAboutMenuItemId(helpID)
- self.Bind(wx.EVT_MENU, self.OnHelpAbout, id=helpID)
- self.Bind(wx.EVT_MENU, self.OnHelpFind, id=findID)
- self.Bind(wx.EVT_MENU, self.OnFindNext, id=findnextID)
+ helpItem = menu.Append(-1, '&About\tCtrl-H', 'wxPython RULES!!!')
+ wx.App_SetMacAboutMenuItemId(helpItem.GetId())
+ self.Bind(wx.EVT_MENU, self.OnHelpAbout, helpItem)
+ self.Bind(wx.EVT_MENU, self.OnHelpFind, findItem)
+ self.Bind(wx.EVT_MENU, self.OnFindNext, findnextItem)
self.Bind(wx.EVT_COMMAND_FIND, self.OnFind)
self.Bind(wx.EVT_COMMAND_FIND_NEXT, self.OnFind)
self.Bind(wx.EVT_COMMAND_FIND_CLOSE, self.OnFindClose)
self.Bind(wx.EVT_SIZE, self.OnSize)
self.Bind(wx.EVT_BUTTON, self.OnButtonClick, theButton)
- self.Bind(wx.EVT_MENU, self.OnExit, id=ID_EXIT)
-
-I hope to be able to remove the need for using IDs even for menu
-events too...
+ self.Bind(wx.EVT_MENU, self.OnExit, id=wx.ID_EXIT)
+
+
+The wx.Menu methods that add items to a wx.Menu have been modified
+such that they return a reference to the wx.MenuItem that was created.
+Additionally menu items and toolbar items have been modified to
+automatically generate a new ID if -1 is given, similar to using -1
+with window classess. This means that you can create menu or toolbar
+items and event bindings without having to predefine a unique menu ID,
+although you still can use IDs just like before if you want. For
+example, these are all equivallent other than ID values::
+
+ 1.
+ item = menu.Append(-1, "E&xit", "Terminate the App")
+ self.Bind(wx.EVT_MENU, self.OnExit, item)
+
+ 2.
+ item = menu.Append(wx.ID_EXIT, "E&xit", "Terminate the App")
+ self.Bind(wx.EVT_MENU, self.OnExit, item)
+ 3.
+ menu.Append(wx.ID_EXIT, "E&xit", "Terminate the App")
+ self.Bind(wx.EVT_MENU, self.OnExit, id=wx.ID_EXIT)
+
+
If you create your own custom event types and EVT_* functions, and you
want to be able to use them with the Bind method above then you should
change your EVT_* to be an instance of wxPyEventBinder instead of a
+
+
The wx Namespace
----------------