- wxPython - Home
- wxPython - Introduction
- wxPython - Environment
- wxPython - Hello World
- wxPython - GUI Builder Tools
- wxPython - Major Classes
- wxPython - Event Handling
- wxPython - Layout Management
- wxPython - Buttons
- wxPython - Dockable Windows
- Multiple Document Interface
- wxPython - Drawing API
- wxPython - Drag and Drop
wxPython - Notebook Class
wxPython class library contains various book control. A book control allows the user to switch between various panels in a frame. This is especially useful when a large amount of data is to be presented.
Book classes are inherited from wx.BookCtrlBase class. The following type of book controls are available −
- wx.Notebook
- wx.Choicebook
- wx.Listbook
- wx.Treebook
wx.Notebook widget presents a tabbed control. One Notebook object in a frame has one or more tabs (called Pages), each of them having a panel showing the layout of controls. The user can switch between pages by clicking on the respective tab title.
Notebook class constructor takes familiar parameters as the following −
wx.Notebook(parent, id, pos, size, style)
The following style parameters are available for customization of the widget −
| S.N. | Parameters & Description |
|---|---|
| 1 |
wx.NB_TOP Places tabs on the top side |
| 2 |
wx.NB_LEFT Places tabs on the left side |
| 3 |
wx.NB_RIGHT Places tabs on the right side |
| 4 |
wx.NB_BOTTOM Places tabs under the notebook pages instead of above the notebook pages |
| 5 |
wx.NB_FIXEDWIDTH All tabs will have the same width |
| 6 |
wx.NB_MULTILINE There can be several rows of tabs |
Member functions of Notebook class −
| S.N. | Functions & Description |
|---|---|
| 1 |
OnSelChange() Handler function called when the page selection is changed |
| 2 |
SetPadding() Sets the amount space around each page's icon and label, in pixels |
| 3 |
GetSelection() Returns the currently selected page |
| 4 |
SetSelection() Sets the selection to the given page, returning the previous selection |
| 5 |
AddPage() Adds a new page |
| 6 |
DeletePage() Deletes a page of given index |
| 7 |
InsertPage() Inserts a new tab at the given index |
| 8 |
RemovePage() Removes the page without deleting |
Event binders defined for this class are −
| S.N. | Events & Description |
|---|---|
| 1 |
EVT_NOTEBOOK_PAGE_CHANGED() The page selection was changed |
| 2 |
EVT_NOTEBOOK_PAGE_CHANGING() The page selection is about to be changed |
Example
The following example deploys a Notebook control in a top level frame.
nb = wx.Notebook(self)
Two classes based on wx.Panel are designed. The first, puts a multi-line TextCtrl in it.
class MyPanel1(wx.Panel):
def __init__(self, parent):
super(MyPanel1, self).__init__(parent)
text = wx.TextCtrl(self, style = wx.TE_MULTILINE, size = (250,150))
The second, shows a RadioBox having three radio buttons.
class MyPanel2(wx.Panel):
def __init__(self, parent):
super(MyPanel2, self).__init__(parent)
lblList = ['Value X', 'Value Y', 'Value Z']
rbox = wx.RadioBox(self, label = 'RadioBox', pos = (25,10), choices = lblList,
majorDimension = 1, style = wx.RA_SPECIFY_ROWS)
Objects of these two panel classes are added as pages in Notebook on the top level frame.
nb.AddPage(MyPanel1(nb),"Editor") nb.AddPage(MyPanel2(nb),"RadioButtons")
The complete code is as follows −
import wx
class MyDialog(wx.Dialog):
def __init__(self, parent, title):
super(MyDialog, self).__init__(parent, title = title, size = (250,150))
panel = wx.Panel(self)
self.btn = wx.Button(panel, wx.ID_OK, label = "ok", size = (50,20), pos = (75,50))
class Mywin(wx.Frame):
def __init__(self, parent, title):
super(Mywin, self).__init__(parent, title = title, size = (250,150))
self.InitUI()
def InitUI(self):
nb = wx.Notebook(self)
nb.AddPage(MyPanel1(nb),"Editor")
nb.AddPage(MyPanel2(nb),"RadioButtons")
self.Centre()
self.Show(True)
class MyPanel1(wx.Panel):
def __init__(self, parent):
super(MyPanel1, self).__init__(parent)
text = wx.TextCtrl(self, style = wx.TE_MULTILINE, size = (250,150))
class MyPanel2(wx.Panel):
def __init__(self, parent):
super(MyPanel2, self).__init__(parent)
lblList = ['Value X', 'Value Y', 'Value Z']
rbox = wx.RadioBox(self, label = 'RadioBox', pos = (25,10), choices = lblList,
majorDimension = 1, style = wx.RA_SPECIFY_ROWS)
ex = wx.App()
Mywin(None,'NoteBook demo')
ex.MainLoop()
The above code produces the following output −