many_years_after wrote: > Hi, pythoners: > > My wxPython program includes a panel whose parent is a frame. The > panel has a button. When I click the button , I want to let the frame > destroy. How to implement it? Could the panel invoke the frame's > method? > Thanks.
Have a look at the following program - ---------------------------------------------------------------------- class MyFrame(wx.Frame): def __init__(self, parent, id, title): wx.Frame.__init__(self, parent, id, title) MyPanel(self) class MyPanel(wx.Panel): def __init__(self,frame): wx.Panel.__init__(self,frame,-1) self.frame = frame b = wx.Button(self,-1,'Close') b.Bind(wx.EVT_BUTTON,self.onClose,id=b.GetId()) def onClose(self,evt): self.frame.Close() evt.Skip() class MyApp(wx.App): def OnInit(self): frame = MyFrame(None, -1, "Test") frame.Show(True) self.SetTopWindow(frame) return True app = MyApp(0) # Create an instance of the application class app.MainLoop() # Tell it to start processing events ---------------------------------------------------------------------- The essential point is that you save a reference to the frame when you create the panel. Then when the button is clicked you can use the reference to call the frame's Close method. HTH Frank Millman -- http://mail.python.org/mailman/listinfo/python-list