[wxPython] replacing menus

Ok, I've chopped it down. Please try on wxGTK, making sure to push
the button twice, which will replace the menu two times. When I
choose the menu after that it consistently segfaults every time.

The only thing I can think of is that it wants me to destroy the old
menu object and create a new one every single time but it seemed
wasteful to me. I think I will try that next.

Anyway, thanks for your help and the sample is included below.

-Mike

From: "Robin Dunn" <robin@alldunn.com>

Looking at the code it seems like it should work. Can you reduce it to a
small sample that duplicates the problem and send the source?

from wxPython.wx import *

class MainWindowFrame(wxFrame):
  
  def __init__(self, parentframe, title):

    wxFrame.__init__(self, parentframe, -1,
      title, size=wxSize(500, 200))
    
    self.mb = wxMenuBar()
    self.SetMenuBar(self.mb)
    self.sbut = wxButton(self, -1,
      'switch menu (push twice and then use menu)')
    EVT_BUTTON(self, self.sbut.GetId(), self.switch)

    #help menu
    self.helpmenu = wxMenu()
    self.othermenu = wxMenu()

    self.mb.Append(self.helpmenu, '&Help')

  def switch(self, event):
  
    lastmenu = self.mb.GetMenuCount() - 1
    self.mb.Replace(lastmenu, self.othermenu, 'Other')
    
class TheApp(wxApp):

  def OnInit(self):
  
    mainwin = MainWindowFrame(NULL, 'menutest')
    mainwin.Show(true)
    self.SetTopWindow(mainwin)
    return true

app = TheApp(0)
app.MainLoop()

···

_____________________________________________________________

Mike Miller "Friends don't let friends use Perl."

Ooh, this sounds like the problem I had with menus not updating
themselves when they were dynamically created. Hrm... I'll
find the email that someone sent me with a fix and resend it
in case it's of use...

Regards,
Denny

···

On Wed, 25 Apr 2001, Mike Miller wrote:

Ok, I've chopped it down. Please try on wxGTK, making sure to push
the button twice, which will replace the menu two times. When I
choose the menu after that it consistently segfaults every time.

--

Linux... because rebooting regularly is NOT normal...
This machine was last rebooted: 33 days 4:19 hours ago