The main reason to use wxPython over Qt is to get truly native UI. There is obsolete article about native OS X toolbar selection which is not working already because of deprecated Carbon API usage. So I built my own with PyObjc.

import objc
import wx

_ = wx.GetTranslation


class Frame(wx.Frame):
    def __init__(self, parent):
        super().__init__(parent, title=_('Preferences'),
                         style=wx.CLOSE_BOX | wx.CAPTION)

        # Toolbar must be attached to window natively.
        self.toolbar = self.CreateToolBar(style=wx.TB_HORIZONTAL | wx.TB_TEXT)

        self.tabs = (
            (
                _('General'),
                wx.Bitmap('tab1.png', wx.BITMAP_TYPE_PNG)
            ),
            (
                _('Advanced'),
                wx.Bitmap('tab2.png', wx.BITMAP_TYPE_PNG)
            ),
        )

        for tab in self.tabs:
            self.toolbar.AddTool(-1, tab[0], tab[1])

        self.toolbar.Realize()

        # Where is magic happens.
        self.SetupToolBar()
        self.SetSelection(0, False)

        self.Show()
        self.Center()

    def SetupToolBar(self):
        # Setup MAC toolbar
        # TODO: Check if we are on the Mac
        ptr = self.MacGetTopLevelWindowRef()
        self.win = objc.objc_object(c_void_p=int(ptr))

        self.osx_toolbar = self.win.toolbar()
        self.osx_toolbar_delegate = self.osx_toolbar.delegate()
        self.osx_toolbar_delegate.setSelectable_(True)

        # We should select OS X toolbar tool manually.
        self.toolbar.Bind(wx.EVT_TOOL, self.OnSelect)

    def OnSelect(self, event):
        pos = self.toolbar.GetToolPos(event.GetId())
        self.SetSelection(pos)

    def SetSelection(self, index, animate=True):
        # TODO: Change tabs, etc.
        # TODO: check if we on mac only

        # Select correct toolbar tool by it's ID
        item_id = self.osx_toolbar.items()[index].itemIdentifier()
        self.osx_toolbar.setSelectedItemIdentifier_(item_id)


if __name__ == '__main__':
    app = wx.App()
    frame = Frame(None)
    app.MainLoop()