code: def _add_submenu(self, parent, data):
          
  
          for item in data:
              obj = item[0]
              if obj == wx.Menu:
                  try:
                      __, menuname, submenu, menu_id = item
                  except ValueError:
                      __, menuname, submenu = item
                      menu_id = -1
  
                  menu = obj()
                  self._add_submenu(menu, submenu)
  
                  if parent == self:
                      self.menubar.Append(menu, menuname)
                  else:
                      parent.AppendMenu(menu_id, menuname, menu)
  
              elif obj == wx.MenuItem:
                  try:
                      msgtype, shortcut, helptext, item_id = item[1]
                  except ValueError:
                      msgtype, shortcut, helptext = item[1]
                      item_id = wx.NewId()
  
                  try:
                      style = item[2]
                  except IndexError:
                      style = wx.ITEM_NORMAL
  
                  menuitem = obj(parent, item_id, shortcut, helptext, style)
                  self.shortcut2menuitem[shortcut] = menuitem
                  self.id2menuitem[item_id] = menuitem
  
                  parent.AppendItem(menuitem)
  
                  self.ids_msgs[item_id] = msgtype
  
                  self.parent.Bind(wx.EVT_MENU, self.OnMenu, id=item_id)
  
              elif obj == "Separator":
                  parent.AppendSeparator()
  
              else:
                  raise TypeError(_("Menu item unknown"))
docs: Adds items in data as a submenu to parent