wxNotebook
Brian Kelley
bkelley at wi.mit.edu
Wed Mar 24 19:48:25 EST 2004
Gandalf wrote:
>
> Hi All!
>
> I would like to hide and show pages in a notebook. Here is what I do
> right now:
>
> def SetVisiblePages(self,pages):
> for index in range(self.notebook.GetPageCount()):
> self.notebook.GetPage(index).Show(index in pages)
>
> But it does not work. All pages remain visible. Only their content will
> be invisible.
> I also tried this:
>
> self.notebook.Show(index in pages)
>
> but it hides the whole nootebook. How can I hide/show individual pages?
> Thanks in advance.
notebook.RemovePage will "hide" a notebook window without deleting it,
you can add it back later. Here is a small example, you'll probably
want to do better bookkeeping than I do.
from wxPython.wx import *
class MyNoteBook(wxNotebook):
def __init__(self, *a, **kw):
wxNotebook.__init__(self, *a, **kw)
self.pages = {}
def HidePage(self, pagenum, label):
page = self.GetPage(pagenum)
self.pages[label] = page, self.GetPageText(pagenum)
self.RemovePage(pagenum)
def ShowPage(self, label):
if label not in self.pages:
return
page, text = self.pages[label]
self.AddPage(page, text, select=True)
if __name__ == "__main__":
app = wxPySimpleApp()
frame = wxFrame(None, -1, "test")
sizer = wxBoxSizer(wxVERTICAL)
notebook = MyNoteBook(frame, -1)
sizer.Add(notebook, 1, wxEXPAND|wxALL)
panel1 = wxPanel(notebook, -1)
panel1.SetBackgroundColour("yellow")
notebook.AddPage(panel1, "Foo")
panel2 = wxPanel(notebook, -1)
panel2.SetBackgroundColour("red")
notebook.AddPage(panel2, "Bar")
def hidepageone(evt, notebook=notebook):
notebook.HidePage(1, "mylabel")
def showpageone(evt, notebook=notebook):
notebook.ShowPage("mylabel")
button1 = wxButton(frame, -1, "Hide Page")
button2 = wxButton(frame, -1, "Show Page")
EVT_BUTTON(button1, button1.GetId(), hidepageone)
EVT_BUTTON(button2, button2.GetId(), showpageone)
sizer.Add(button1, 0, wxEXPAND)
sizer.Add(button2, 0, wxEXPAND)
frame.SetSizer(sizer)
frame.Show()
app.MainLoop()
More information about the Python-list
mailing list