how to close notebook with button

I can close notebook by mouse click window X icon.
and I can close on page with button.
But I can’t close notebook with button.

Need help.

import wx

class PageOne(wx.Panel):
def init(self, parent):
wx.Panel.init(self, parent)
button_close1 = wx.Button(self, label=“close1”, size=(60, -1))
self.Bind(wx.EVT_BUTTON, self.OnClose, button_close1)

def OnClose(self, event):
    print "page1 close"
    self.Destroy()

class PageTwo(wx.Panel):
def init(self, parent):
wx.Panel.init(self, parent)
button_close2 = wx.Button(self, label=“close2”, size=(60, -1))

    self.Bind(wx.EVT_BUTTON, self.OnClose, button_close2)

def OnClose(self, event):
    print "page2 close"
    self.Destroy()
    event.Skip()

class PageThree(wx.Panel):

def __init__(self, parent):
    wx.Panel.__init__(self, parent)
    button_close3 = wx.Button(self, label="close3", size=(60, -1))
    self.Bind(wx.EVT_BUTTON, self.OnClose, button_close3)

    self.Bind(wx.EVT_CLOSE, self.OnClose)

def OnClose(self, event):
    print "page3 close"
    self.Destroy()

class MainFrame(wx.Frame):
def init(self):
wx.Frame.init(self, None, title=“Simple Notebook Example”)

    p = wx.Panel(self)
    nb = wx.Notebook(p)

    page1 = PageOne(nb)
    page2 = PageTwo(nb)
    page3 = PageThree(nb)

    nb.AddPage(page1, "Page 1")
    nb.AddPage(page2, "Page 2")

    nb.AddPage(page3, "Page 3")

    sizer = wx.BoxSizer()
    sizer.Add(nb, 1, wx.EXPAND)
    p.SetSizer(sizer)

if name == “main”:
app = wx.App()
MainFrame().Show()

app.MainLoop()
···


jiang zhixiang

Hi,

···

On Tuesday, April 1, 2014 5:00:21 AM UTC-5, luckrill wrote:

I can close notebook by mouse click window X icon.
and I can close on page with button.
But I can’t close notebook with button.

Need help.

import wx

class PageOne(wx.Panel):
def init(self, parent):
wx.Panel.init(self, parent)
button_close1 = wx.Button(self, label=“close1”, size=(60, -1))
self.Bind(wx.EVT_BUTTON, self.OnClose, button_close1)

def OnClose(self, event):
    print "page1 close"
    self.Destroy()

class PageTwo(wx.Panel):
def init(self, parent):
wx.Panel.init(self, parent)
button_close2 = wx.Button(self, label=“close2”, size=(60, -1))

    self.Bind(wx.EVT_BUTTON, self.OnClose, button_close2)

def OnClose(self, event):
    print "page2 close"
    self.Destroy()
    event.Skip()

class PageThree(wx.Panel):

def __init__(self, parent):
    wx.Panel.__init__(self, parent)
    button_close3 = wx.Button(self, label="close3", size=(60, -1))
    self.Bind(wx.EVT_BUTTON, self.OnClose, button_close3)

    self.Bind(wx.EVT_CLOSE, self.OnClose)

def OnClose(self, event):
    print "page3 close"
    self.Destroy()

class MainFrame(wx.Frame):
def init(self):
wx.Frame.init(self, None, title=“Simple Notebook Example”)

    p = wx.Panel(self)
    nb = wx.Notebook(p)

    page1 = PageOne(nb)
    page2 = PageTwo(nb)
    page3 = PageThree(nb)

    nb.AddPage(page1, "Page 1")
    nb.AddPage(page2, "Page 2")

    nb.AddPage(page3, "Page 3")

    sizer = wx.BoxSizer()
    sizer.Add(nb, 1, wx.EXPAND)
    p.SetSizer(sizer)

if name == “main”:
app = wx.App()
MainFrame().Show()

app.MainLoop()


jiang zhixiang

Change your OnClose methods to “self.GetTopLevelParent().Destroy()” instead of just “self.Destroy()”. The way you’re doing it, you are only destroying the notebook’s page, not the frame.

  • Mike

thanks very much.

self.GetTopLevelParent() help me fix two issue.

close notebook

handle event

nice api

···

2014-04-01 21:49 GMT+08:00 Mike Driscoll kyosohma@gmail.com:

Hi,

On Tuesday, April 1, 2014 5:00:21 AM UTC-5, luckrill wrote:

I can close notebook by mouse click window X icon.
and I can close on page with button.
But I can’t close notebook with button.

Need help.

import wx

class PageOne(wx.Panel):
def init(self, parent):
wx.Panel.init(self, parent)
button_close1 = wx.Button(self, label=“close1”, size=(60, -1))
self.Bind(wx.EVT_BUTTON, self.OnClose, button_close1)

def OnClose(self, event):
    print "page1 close"
    self.Destroy()

class PageTwo(wx.Panel):
def init(self, parent):
wx.Panel.init(self, parent)
button_close2 = wx.Button(self, label=“close2”, size=(60, -1))

    self.Bind(wx.EVT_BUTTON, self.OnClose, button_close2)

def OnClose(self, event):
    print "page2 close"
    self.Destroy()
    event.Skip()

class PageThree(wx.Panel):

def __init__(self, parent):
    wx.Panel.__init__(self, parent)
    button_close3 = wx.Button(self, label="close3", size=(60, -1))
    self.Bind(wx.EVT_BUTTON, self.OnClose, button_close3)


    self.Bind(wx.EVT_CLOSE, self.OnClose)

def OnClose(self, event):
    print "page3 close"
    self.Destroy()

class MainFrame(wx.Frame):
def init(self):
wx.Frame.init(self, None, title=“Simple Notebook Example”)

    p = wx.Panel(self)
    nb = wx.Notebook(p)

    page1 = PageOne(nb)
    page2 = PageTwo(nb)
    page3 = PageThree(nb)

    nb.AddPage(page1, "Page 1")
    nb.AddPage(page2, "Page 2")


    nb.AddPage(page3, "Page 3")

    sizer = wx.BoxSizer()
    sizer.Add(nb, 1, wx.EXPAND)
    p.SetSizer(sizer)

if name == “main”:
app = wx.App()

MainFrame().Show()

app.MainLoop()


jiang zhixiang

Change your OnClose methods to “self.GetTopLevelParent().Destroy()” instead of just “self.Destroy()”. The way you’re doing it, you are only destroying the notebook’s page, not the frame.

  • Mike

You received this message because you are subscribed to the Google Groups “wxPython-users” group.

To unsubscribe from this group and stop receiving emails from it, send an email to wxpython-users+unsubscribe@googlegroups.com.

For more options, visit https://groups.google.com/d/optout.


jiang zhixiang