.. wxPython Phoenix documentation

   This file was generated by Phoenix's sphinx generator and associated
   tools, do not edit by hand.

   Copyright: (c) 2011-2020 by Total Control Software
   License:   wxWindows License

.. include:: headings.inc



.. _wx.Treebook:

==========================================================================================================================================
|phoenix_title|  **wx.Treebook**
==========================================================================================================================================

This class is an extension of the :ref:`wx.Notebook`  class that allows a tree structured set of pages to be shown in a control.          

A classic example is a netscape preferences dialog that shows a tree of preference sections on the left and select section page on the right. 

To use the class simply create it and populate with pages using :meth:`~wx.Treebook.InsertPage`, :meth:`~wx.Treebook.InsertSubPage`, :meth:`~wx.Treebook.AddPage`, :meth:`~wx.Treebook.AddSubPage`. 

If your tree is no more than 1 level in depth then you could simply use :meth:`~wx.Treebook.AddPage`  and :meth:`~wx.Treebook.AddSubPage`  to sequentially populate your tree by adding at every step a page or a subpage to the end of the tree. 

^^ 





.. _Treebook-events:

|events| Events Emitted by this Class
=====================================

Handlers bound for the following event types will receive a :ref:`wx.BookCtrlEvent` parameter.


- EVT_TREEBOOK_PAGE_CHANGED: The page selection was changed. Processes a  ``wxEVT_TREEBOOK_PAGE_CHANGED``   event.   
- EVT_TREEBOOK_PAGE_CHANGING: The page selection is about to be changed. Processes a  ``wxEVT_TREEBOOK_PAGE_CHANGING``   event. This event can be  :meth:`~wx.Treebook.vetoed`.  
- EVT_TREEBOOK_NODE_COLLAPSED: The page node is going to be collapsed. Processes a  ``wxEVT_TREEBOOK_NODE_COLLAPSED``   event.   
- EVT_TREEBOOK_NODE_EXPANDED: The page node is going to be expanded. Processes a  ``wxEVT_TREEBOOK_NODE_EXPANDED``   event. ^^ 






         



.. seealso:: :ref:`wx.BookCtrl`, :ref:`wx.BookCtrlEvent`, :ref:`wx.Notebook`, :ref:`wx.TreeCtrl`, :ref:`wx.ImageList`, :ref:`BookCtrl Overview <bookctrl overview>`, :ref:`Notebook Sample <notebook sample>`    







|

|class_hierarchy| Class Hierarchy
=================================

.. raw:: html

   <div id="toggleBlock" onclick="return toggleVisibility(this)" class="closed" style="cursor:pointer;">
   <img id="toggleBlock-trigger" src="_static/images/closed.png"/>
   Inheritance diagram for class <strong>Treebook</strong>:
   </div>
   <div id="toggleBlock-summary" style="display:block;"></div>
   <div id="toggleBlock-content" style="display:none;">
   <p class="graphviz">
   <center><img src="_static/images/inheritance/wx.Treebook_inheritance.png" alt="Inheritance diagram of Treebook" usemap="#dummy" class="inheritance"/></center>
   <script type="text/javascript">toggleVisibilityOnLoad(document.getElementById('toggleBlock'))</script>
   <map id="dummy" name="dummy"> <area shape="rect" id="node1" href="wx.Treebook.html" title="wx.Treebook" alt="" coords="122,392,226,421"/> <area shape="rect" id="node2" href="wx.BookCtrlBase.html" title="wx.BookCtrlBase" alt="" coords="107,315,241,344"/> <area shape="rect" id="node3" href="wx.Control.html" title="wx.Control" alt="" coords="63,237,155,267"/> <area shape="rect" id="node4" href="wx.WithImages.html" title="wx.WithImages" alt="" coords="179,237,302,267"/> <area shape="rect" id="node5" href="wx.Window.html" title="wx.Window" alt="" coords="60,160,157,189"/> <area shape="rect" id="node6" href="wx.EvtHandler.html" title="wx.EvtHandler" alt="" coords="50,83,167,112"/> <area shape="rect" id="node7" href="wx.Object.html" title="wx.Object" alt="" coords="5,5,92,35"/> <area shape="rect" id="node8" href="wx.Trackable.html" title="wx.Trackable" alt="" coords="117,5,223,35"/> </map> 
   </p>
   </div>

|


|method_summary| Methods Summary
================================

================================================================================ ================================================================================
:meth:`~wx.Treebook.__init__`                                                    Default constructor.
:meth:`~wx.Treebook.AddPage`                                                     Adds a new page.
:meth:`~wx.Treebook.AddSubPage`                                                  Adds a new child-page to the last top-level page.
:meth:`~wx.Treebook.CollapseNode`                                                Shortcut for :meth:`~Treebook.ExpandNode` ( `pageId`, ``False`` ).
:meth:`~wx.Treebook.Create`                                                      Creates a treebook control.
:meth:`~wx.Treebook.DeletePage`                                                  Deletes the page at the specified position and all its children.
:meth:`~wx.Treebook.ExpandNode`                                                  Expands (collapses) the `pageId`  node.
:meth:`~wx.Treebook.GetClassDefaultAttributes`                                   
:meth:`~wx.Treebook.GetPageParent`                                               Returns the parent page of the given one or  ``NOT_FOUND``   if this is a top-level page.
:meth:`~wx.Treebook.GetSelection`                                                Returns the currently selected page, or  ``NOT_FOUND``   if none was selected.
:meth:`~wx.Treebook.GetTreeCtrl`                                                 Returns the tree control used for selecting pages.
:meth:`~wx.Treebook.InsertPage`                                                  Inserts a new page just before the page indicated by `pagePos`.
:meth:`~wx.Treebook.InsertSubPage`                                               Inserts a sub page under the specified page.
:meth:`~wx.Treebook.IsNodeExpanded`                                              Returns ``True`` if the page represented by `pageId`  is expanded.
================================================================================ ================================================================================


|


|property_summary| Properties Summary
=====================================

================================================================================ ================================================================================
:attr:`~wx.Treebook.Selection`                                                   See :meth:`~wx.Treebook.GetSelection`
:attr:`~wx.Treebook.TreeCtrl`                                                    See :meth:`~wx.Treebook.GetTreeCtrl`
================================================================================ ================================================================================


|


|api| Class API
===============


.. class:: wx.Treebook(BookCtrlBase)

   **Possible constructors**::

       Treebook()
       
       Treebook(parent, id=ID_ANY, pos=DefaultPosition, size=DefaultSize,
                style=BK_DEFAULT, name=EmptyString)
       
   
   This class is an extension of the Notebook class that allows a tree
   structured set of pages to be shown in a control.



   .. method:: __init__(self, *args, **kw)



      |overload| Overloaded Implementations:

      :html:`<hr class="overloadsep" /><br />`

      
      **__init__** `(self)`
      
      Default constructor.                   
      
      
      
      
      :html:`<hr class="overloadsep" /><br />`

      
      **__init__** `(self, parent, id=ID_ANY, pos=DefaultPosition, size=DefaultSize, style=BK_DEFAULT, name=EmptyString)`
      
      Creates an empty :ref:`wx.Treebook`.                  
      
      
      
      
      :param `parent`: The parent window. Must be non-NULL.   
      :type `parent`: wx.Window
      :param `id`: The window identifier.   
      :type `id`: wx.WindowID
      :param `pos`: The window position.   
      :type `pos`: wx.Point
      :param `size`: The window size.   
      :type `size`: wx.Size
      :param `style`: The window style. See :ref:`wx.Notebook`.   
      :type `style`: long
      :param `name`: The name of the control (used only under Motif).   
      :type `name`: string
      
      
      
      
      
      
      
      
      
      
      
      
      
      
                        
      
      
      
      
      :html:`<hr class="overloadsep" /><br />`






   .. method:: AddPage(self, page, text, bSelect=False, imageId=NOT_FOUND)

      Adds a new page.                  

      The page is placed at the topmost level after all other pages. ``None`` could be specified for page to create an empty page.                  


      :param `page`: 
      :type `page`: wx.Window
      :param `text`: 
      :type `text`: string
      :param `bSelect`: 
      :type `bSelect`: bool
      :param `imageId`: 
      :type `imageId`: int




      :rtype: `bool`








   .. method:: AddSubPage(self, page, text, bSelect=False, imageId=NOT_FOUND)

      Adds a new child-page to the last top-level page.                  

      ``None`` could be specified for page to create an empty page.                  


      :param `page`: 
      :type `page`: wx.Window
      :param `text`: 
      :type `text`: string
      :param `bSelect`: 
      :type `bSelect`: bool
      :param `imageId`: 
      :type `imageId`: int




      :rtype: `bool`








   .. method:: CollapseNode(self, pageId)

      Shortcut for :meth:`ExpandNode` ( `pageId`, ``False`` ).                  


      :param `pageId`: 
      :type `pageId`: int




      :rtype: `bool`








   .. method:: Create(self, parent, id=ID_ANY, pos=DefaultPosition, size=DefaultSize, style=BK_DEFAULT, name=EmptyString)

      Creates a treebook control.                  

      See :meth:`Treebook.__init__`   for the description of the parameters.                  


      :param `parent`: 
      :type `parent`: wx.Window
      :param `id`: 
      :type `id`: wx.WindowID
      :param `pos`: 
      :type `pos`: wx.Point
      :param `size`: 
      :type `size`: wx.Size
      :param `style`: 
      :type `style`: long
      :param `name`: 
      :type `name`: string




      :rtype: `bool`








   .. method:: DeletePage(self, pagePos)

      Deletes the page at the specified position and all its children.                  

      Could trigger page selection change in a case when selected page is removed. In that case its parent is selected (or the next page if no parent).                  


      :param `pagePos`: 
      :type `pagePos`: int




      :rtype: `bool`








   .. method:: ExpandNode(self, pageId, expand=True)

      Expands (collapses) the `pageId`  node.                  

      Returns the previous state. May generate page changing events (if selected page is under the collapsed branch, then its parent is autoselected).                  


      :param `pageId`: 
      :type `pageId`: int
      :param `expand`: 
      :type `expand`: bool




      :rtype: `bool`








   .. staticmethod:: GetClassDefaultAttributes(variant=WINDOW_VARIANT_NORMAL)




      :param `variant`: 
      :type `variant`: wx.WindowVariant




      :rtype: :ref:`wx.VisualAttributes`








   .. method:: GetPageParent(self, page)

      Returns the parent page of the given one or  ``NOT_FOUND``   if this is a top-level page.                   


      :param `page`: 
      :type `page`: int




      :rtype: `int`








   .. method:: GetSelection(self)

      Returns the currently selected page, or  ``NOT_FOUND``   if none was selected.                   

                

      :rtype: `int`







      .. note:: 

         This method may return either the previously or newly selected page when called from the EVT_TREEBOOK_PAGE_CHANGED() handler depending on the platform and so :meth:`wx.BookCtrlEvent.GetSelection`   should be used instead in this case.   








   .. method:: GetTreeCtrl(self)

      Returns the tree control used for selecting pages. 

      :rtype: :ref:`wx.TreeCtrl`








   .. method:: InsertPage(self, pagePos, page, text, bSelect=False, imageId=NOT_FOUND)

      Inserts a new page just before the page indicated by `pagePos`.                  

      The new page is placed before `pagePos`  page and on the same level. ``None`` could be specified for page to create an empty page.                  


      :param `pagePos`: 
      :type `pagePos`: int
      :param `page`: 
      :type `page`: wx.Window
      :param `text`: 
      :type `text`: string
      :param `bSelect`: 
      :type `bSelect`: bool
      :param `imageId`: 
      :type `imageId`: int




      :rtype: `bool`








   .. method:: InsertSubPage(self, pagePos, page, text, bSelect=False, imageId=NOT_FOUND)

      Inserts a sub page under the specified page.                  

      ``None`` could be specified for page to create an empty page.                  


      :param `pagePos`: 
      :type `pagePos`: int
      :param `page`: 
      :type `page`: wx.Window
      :param `text`: 
      :type `text`: string
      :param `bSelect`: 
      :type `bSelect`: bool
      :param `imageId`: 
      :type `imageId`: int




      :rtype: `bool`








   .. method:: IsNodeExpanded(self, pageId)

      Returns ``True`` if the page represented by `pageId`  is expanded.                  


      :param `pageId`: 
      :type `pageId`: int




      :rtype: `bool`








   .. attribute:: Selection

      See :meth:`~wx.Treebook.GetSelection`


   .. attribute:: TreeCtrl

      See :meth:`~wx.Treebook.GetTreeCtrl`

