.. include:: headings.inc .. _Notebook: ========================================================================================================================================== |phoenix_title| **Notebook** ========================================================================================================================================== This class represents a notebook control, which manages multiple windows with associated tabs. To use the class, create a :ref:`Notebook` object and call :meth:`Notebook.AddPage` or :meth:`Notebook.InsertPage` , passing a window to be used as the page. Do not explicitly delete the window for a page that is currently managed by :ref:`Notebook`. **NotebookPage** is a typedef for :ref:`Window`. .. _Notebook-styles: |styles| Window Styles ================================ This class supports the following styles: - ``NB_TOP``: Place tabs on the top side. - ``NB_LEFT``: Place tabs on the left side. - ``NB_RIGHT``: Place tabs on the right side. - ``NB_BOTTOM``: Place tabs under instead of above the notebook pages. - ``NB_FIXEDWIDTH``: (Windows only) All tabs will have same width. - ``NB_MULTILINE``: (Windows only) There can be several rows of tabs. - ``NB_NOPAGETHEME``: (Windows only) Display a solid colour on notebook pages, and not a gradient, which can reduce performance. - ``NB_FLAT``: (Windows ``CE`` only) Show tabs in a flat style. The styles ``NB_LEFT``, ``RIGHT`` and ``BOTTOM`` are not supported under Microsoft Windows XP when using visual themes. .. _Notebook-events: |events| Events Emitted by this Class ===================================== Handlers bound for the following event types will receive a :ref:`BookCtrlEvent` parameter. - EVT_NOTEBOOK_PAGE_CHANGED: The page selection was changed. Processes a ``wxEVT_COMMAND_NOTEBOOK_PAGE_CHANGED`` event. - EVT_NOTEBOOK_PAGE_CHANGING: The page selection is about to be changed. Processes a ``wxEVT_COMMAND_NOTEBOOK_PAGE_CHANGING`` event. This event can be vetoed. |phoenix_title| Page backgrounds ================================ On Windows XP, the default theme paints a gradient on the notebook's pages. If you wish to suppress this theme, for aesthetic or performance reasons, there are three ways of doing it. You can use ``NB_NOPAGETHEME`` to disable themed drawing for a particular notebook, you can call :meth:`SystemOptions.SetOption` to disable it for the whole application, or you can disable it for individual pages by using :meth:`~Notebook.SetBackgroundColour`. To disable themed pages globally: :: wx.SystemOptions.SetOption("msw.notebook.themed-background", 0) Set the value to 1 to enable it again. To give a single page a solid background that more or less fits in with the overall theme, use: :: col = notebook.GetThemeBackgroundColour() if col.IsOk(): page.SetBackgroundColour(col) On platforms other than Windows, or if the application is not using Windows themes, :meth:`~Notebook.GetThemeBackgroundColour` will return an uninitialised colour object, and the above code will therefore work on all platforms. .. seealso:: :meth:`BookCtrl` , :ref:`BookCtrlEvent`, :ref:`ImageList`, | |class_hierarchy| Inheritance Diagram ===================================== Inheritance diagram for class **Notebook** .. raw:: html

Inheritance diagram of Notebook

| |appearance| Control Appearance =============================== | .. figure:: _static/images/widgets/fullsize/wxmsw/notebook.png :alt: wxMSW :figclass: floatleft **wxMSW** .. figure:: _static/images/widgets/fullsize/wxmac/notebook.png :alt: wxMAC :figclass: floatright **wxMAC** .. figure:: _static/images/widgets/fullsize/wxgtk/notebook.png :alt: wxGTK :figclass: floatcenter **wxGTK** | |method_summary| Methods Summary ================================ ================================================================================ ================================================================================ :meth:`~Notebook.__init__` Constructs a notebook control. :meth:`~Notebook.ChangeSelection` Changes the selection for the given page, returning the previous selection. :meth:`~Notebook.Create` Creates a notebook control. :meth:`~Notebook.GetPageImage` Returns the image index for the given page. :meth:`~Notebook.GetPageText` Returns the string for the given page. :meth:`~Notebook.GetRowCount` Returns the number of rows in the notebook control. :meth:`~Notebook.GetSelection` Returns the currently selected page, or ``NOT_FOUND`` if none was selected. :meth:`~Notebook.GetThemeBackgroundColour` If running under Windows and themes are enabled for the application, this function returns a suitable colour for painting the background of a notebook page, and can be passed to :meth:`SetBackgroundColour` . :meth:`~Notebook.InsertPage` Inserts a new page at the specified position. :meth:`~Notebook.SetPadding` Sets the amount of space around each page's icon and label, in pixels. :meth:`~Notebook.SetPageImage` Sets the image index for the given page. :meth:`~Notebook.SetPageText` Sets the text for the given page. :meth:`~Notebook.SetSelection` Sets the selection for the given page, returning the previous selection. ================================================================================ ================================================================================ | |property_summary| Properties Summary ===================================== ================================================================================ ================================================================================ :attr:`~Notebook.RowCount` See :meth:`~Notebook.GetRowCount` :attr:`~Notebook.Selection` See :meth:`~Notebook.GetSelection` and :meth:`~Notebook.SetSelection` :attr:`~Notebook.ThemeBackgroundColour` See :meth:`~Notebook.GetThemeBackgroundColour` ================================================================================ ================================================================================ | |api| Class API =============== .. class:: Notebook(BookCtrlBase) This class represents a notebook control, which manages multiple windows with associated tabs. **Possible constructors**:: Notebook() Notebook(parent, id=ID_ANY, pos=DefaultPosition, size=DefaultSize, style=0, name=NotebookNameStr) .. method:: __init__(self, *args, **kw) |overload| **Overloaded Implementations**: **~~~** **__init__** `(self)` Constructs a notebook control. **~~~** **__init__** `(self, parent, id=ID_ANY, pos=DefaultPosition, size=DefaultSize, style=0, name=NotebookNameStr)` Constructs a notebook control. Note that sometimes you can reduce flicker by passing the ``CLIP_CHILDREN`` window style. :param `parent`: The parent window. Must be not ``None``. :type `parent`: Window :param `id`: The window identifier. :type `id`: int :param `pos`: The window position. :type `pos`: Point :param `size`: The window size. :type `size`: Size :param `style`: The window style. See :ref:`Notebook`. :type `style`: long :param `name`: The name of the control. :type `name`: string **~~~** .. method:: ChangeSelection(self, page) Changes the selection for the given page, returning the previous selection. This function behaves as :meth:`SetSelection` but does `not` generate the page changing events. See :ref:`User Generated Events vs Programmatically Generated Events ` for more information. :param `page`: :type `page`: int :rtype: `int` .. method:: Create(self, parent, id=ID_ANY, pos=DefaultPosition, size=DefaultSize, style=0, name=NotebookNameStr) Creates a notebook control. See :ref:`Notebook` for a description of the parameters. :param `parent`: :type `parent`: Window :param `id`: :type `id`: int :param `pos`: :type `pos`: Point :param `size`: :type `size`: Size :param `style`: :type `style`: long :param `name`: :type `name`: string :rtype: `bool` .. method:: GetPageImage(self, nPage) Returns the image index for the given page. :param `nPage`: :type `nPage`: int :rtype: `int` .. method:: GetPageText(self, nPage) Returns the string for the given page. :param `nPage`: :type `nPage`: int :rtype: `string` .. method:: GetRowCount(self) Returns the number of rows in the notebook control. :rtype: `int` .. method:: GetSelection(self) Returns the currently selected page, or ``NOT_FOUND`` if none was selected. Note that this method may return either the previously or newly selected page when called from the ``EVT_BOOKCTRL_PAGE_CHANGED`` handler depending on the platform and so :meth:`BookCtrlEvent.GetSelection` should be used instead in this case. :rtype: `int` .. method:: GetThemeBackgroundColour(self) If running under Windows and themes are enabled for the application, this function returns a suitable colour for painting the background of a notebook page, and can be passed to :meth:`SetBackgroundColour` . Otherwise, an uninitialised colour will be returned. :rtype: :ref:`Colour` .. method:: InsertPage(self, index, page, text, select=False, imageId=NO_IMAGE) Inserts a new page at the specified position. :param `index`: Specifies the position for the new page. :type `index`: int :param `page`: Specifies the new page. :type `page`: Window :param `text`: Specifies the text for the new page. :type `text`: string :param `select`: Specifies whether the page should be selected. :type `select`: bool :param `imageId`: Specifies the optional image index for the new page. :type `imageId`: int :rtype: `bool` :returns: ``True`` if successful, ``False`` otherwise. .. note:: Do not delete the page, it will be deleted by the book control. .. seealso:: :meth:`AddPage` .. method:: SetPadding(self, padding) Sets the amount of space around each page's icon and label, in pixels. :param `padding`: :type `padding`: Size .. note:: The vertical padding cannot be changed in wxGTK. .. method:: SetPageImage(self, page, image) Sets the image index for the given page. `image` is an index into the image list which was set with :meth:`SetImageList` . :param `page`: :type `page`: int :param `image`: :type `image`: int :rtype: `bool` .. method:: SetPageText(self, page, text) Sets the text for the given page. :param `page`: :type `page`: int :param `text`: :type `text`: string :rtype: `bool` .. method:: SetSelection(self, page) Sets the selection for the given page, returning the previous selection. Notice that the call to this function generates the page changing events, use the :meth:`ChangeSelection` function if you don't want these events to be generated. :param `page`: :type `page`: int :rtype: `int` .. seealso:: :meth:`GetSelection` .. attribute:: RowCount See :meth:`~Notebook.GetRowCount` .. attribute:: Selection See :meth:`~Notebook.GetSelection` and :meth:`~Notebook.SetSelection` .. attribute:: ThemeBackgroundColour See :meth:`~Notebook.GetThemeBackgroundColour`