EVT_MENU not firing in Aui MDI app

Hi,

I'm trying to get custom menus working for an AUI_MDI app. The sample in the wx demo and docs show how to do this, but the EVT_MENU event is not fired for child window menu items. Here is a modified version of the demo app..note that the ChildFrame has a call to Bind to get events for it's menu items, but the OnMenu function is never called.

Any suggestions appreciated!

Thanks, Paul

import wx
import wx.aui

···

#----------------------------------------------------------------------

class ParentFrame(wx.aui.AuiMDIParentFrame):
    def __init__(self, parent):
        wx.aui.AuiMDIParentFrame.__init__(self, parent, -1,
                                          title="AuiMDIParentFrame",
                                          size=(640,480),
                                          style=wx.DEFAULT_FRAME_STYLE)
        self.count = 0
        mb = self.MakeMenuBar()
        self.SetMenuBar(mb)
        self.CreateStatusBar()

    def MakeMenuBar(self):
        mb = wx.MenuBar()
        menu = wx.Menu()
        item = menu.Append(-1, "New child window\tCtrl-N")
        self.Bind(wx.EVT_MENU, self.OnNewChild, item)
        item = menu.Append(-1, "Close parent")
        self.Bind(wx.EVT_MENU, self.OnDoClose, item)
        mb.Append(menu, "&File")
        return mb
           def OnNewChild(self, evt):
        self.count += 1
        child = ChildFrame(self, self.count)
        child.Show()

    def OnDoClose(self, evt):
        self.Close()
       
#----------------------------------------------------------------------

class ChildFrame(wx.aui.AuiMDIChildFrame):
    def __init__(self, parent, count):
        wx.aui.AuiMDIChildFrame.__init__(self, parent, -1,
                                         title="Child: %d" % count)
        mb = parent.MakeMenuBar()
        menu = wx.Menu()
        item = menu.Append(-1, "This is child %d's menu" % count)

# Get the menu item to fire an event
        self.Bind( wx.EVT_MENU, self.OnMenu, item )

        mb.Append(menu, "&Child")
        self.SetMenuBar(mb)
               p = wx.Panel(self)
        wx.StaticText(p, -1, "This is child %d" % count, (10,10))
        p.SetBackgroundColour('light blue')

        sizer = wx.BoxSizer()
        sizer.Add(p, 1, wx.EXPAND)
        self.SetSizer(sizer)
               wx.CallAfter(self.Layout)

    def OnMenu( self, evt ):
    # this should be called when the menu item is selected, but it's not
        print "OnMenu"
#----------------------------------------------------------------------

class TestPanel(wx.Panel):
    def __init__(self, parent, log):
        self.log = log
        wx.Panel.__init__(self, parent, -1)

        b = wx.Button(self, -1, "Show a AuiMDIParentFrame", (50,50))
        self.Bind(wx.EVT_BUTTON, self.OnButton, b)

    def OnButton(self, evt):
        pf = ParentFrame(self)
        pf.Show()
       
#----------------------------------------------------------------------

def runTest(frame, nb, log):
    win = TestPanel(nb, log)
    return win

#----------------------------------------------------------------------

overview = """<html><body>
<h2><center>wx.aui.AuiMDI</center></h2>

The wx.aui.AuiMDIParentFrame and wx.aui.AuiMDIChildFrame classes
implement the same API as wx.MDIParentFrame and wx.MDIChildFrame, but
implement the multiple document interface with a wx.aui.AuiNotebook.

</body></html>
"""

if __name__ == '__main__':
    import sys,os
    import run
    run.main(['', os.path.basename(sys.argv[0])] + sys.argv[1:])

Paul Turbett wrote:

Hi,

I'm trying to get custom menus working for an AUI_MDI app. The sample in the wx demo and docs show how to do this, but the EVT_MENU event is not fired for child window menu items. Here is a modified version of the demo app..note that the ChildFrame has a call to Bind to get events for it's menu items, but the OnMenu function is never called.

Platform and version? It's working for me on 2.8.6.0.

···

--
Robin Dunn
Software Craftsman
http://wxPython.org Java give you jitters? Relax with wxPython!

Actually, it's working of me now too. Apologies for wasting your time :frowning:

Robin Dunn wrote:

···

Paul Turbett wrote:

Hi,

I'm trying to get custom menus working for an AUI_MDI app. The sample in the wx demo and docs show how to do this, but the EVT_MENU event is not fired for child window menu items. Here is a modified version of the demo app..note that the ChildFrame has a call to Bind to get events for it's menu items, but the OnMenu function is never called.

Platform and version? It's working for me on 2.8.6.0.