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."