.. 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.grid.GridTableBase:

==========================================================================================================================================
|phoenix_title|  **wx.grid.GridTableBase**
==========================================================================================================================================

The almost abstract base class for grid tables.          

A grid table is responsible for storing the grid data and, indirectly, grid cell attributes. The data can be stored in the way most convenient for the application but has to be provided in string form to :ref:`wx.grid.Grid`. It is also possible to provide cells values in other formats if appropriate, e.g. as numbers. 

This base class is not quite abstract as it implements a trivial strategy for storing the attributes by forwarding it to :ref:`wx.grid.GridCellAttrProvider`  and also provides stubs for some other functions. However it does have a number of pure virtual methods which must be implemented in the derived classes. 









.. seealso:: :ref:`wx.grid.GridStringTable`  







|

|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>GridTableBase</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.grid.GridTableBase_inheritance.png" alt="Inheritance diagram of GridTableBase" 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.grid.GridTableBase.html" title="wx.grid.GridTableBase" alt="" coords="5,83,172,112"/> <area shape="rect" id="node2" href="wx.Object.html" title="wx.Object" alt="" coords="45,5,132,35"/> </map> 
   </p>
   </div>

|


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

================================================================================ ================================================================================
:meth:`~wx.grid.GridTableBase.__init__`                                          Default constructor.
:meth:`~wx.grid.GridTableBase.AppendCols`                                        Exactly the same as :meth:`~GridTableBase.AppendRows`   but for columns.
:meth:`~wx.grid.GridTableBase.AppendRows`                                        Append additional rows at the end of the table.
:meth:`~wx.grid.GridTableBase.CanGetValueAs`                                     Returns ``True`` if the value of the given cell can be accessed as if it were of the specified type.
:meth:`~wx.grid.GridTableBase.CanHaveAttributes`                                 Returns ``True`` if this table supports attributes or ``False`` otherwise.
:meth:`~wx.grid.GridTableBase.CanMeasureColUsingSameAttr`                        Override to return ``True`` if the same attribute can be used for measuring all cells in the given column.
:meth:`~wx.grid.GridTableBase.CanSetValueAs`                                     Returns ``True`` if the value of the given cell can be set as if it were of the specified type.
:meth:`~wx.grid.GridTableBase.Clear`                                             Clear the table contents.
:meth:`~wx.grid.GridTableBase.DeleteCols`                                        Exactly the same as :meth:`~GridTableBase.DeleteRows`   but for columns.
:meth:`~wx.grid.GridTableBase.DeleteRows`                                        Delete rows from the table.
:meth:`~wx.grid.GridTableBase.GetAttr`                                           Return the attribute for the given cell.
:meth:`~wx.grid.GridTableBase.GetAttrProvider`                                   Returns the attribute provider currently being used.
:meth:`~wx.grid.GridTableBase.GetAttrPtr`                                        Return the attribute for the given cell.
:meth:`~wx.grid.GridTableBase.GetColLabelValue`                                  Return the label of the specified column.
:meth:`~wx.grid.GridTableBase.GetColsCount`                                      Return the number of columns in the table.
:meth:`~wx.grid.GridTableBase.GetCornerLabelValue`                               Return the label of the grid's corner.
:meth:`~wx.grid.GridTableBase.GetNumberCols`                                     Must be overridden to return the number of columns in the table.
:meth:`~wx.grid.GridTableBase.GetNumberRows`                                     Must be overridden to return the number of rows in the table.
:meth:`~wx.grid.GridTableBase.GetRowLabelValue`                                  Return the label of the specified row.
:meth:`~wx.grid.GridTableBase.GetRowsCount`                                      Return the number of rows in the table.
:meth:`~wx.grid.GridTableBase.GetTypeName`                                       Returns the type of the value in the given cell.
:meth:`~wx.grid.GridTableBase.GetValue`                                          Must be overridden to implement accessing the table values as text.
:meth:`~wx.grid.GridTableBase.GetValueAsBool`                                    Returns the value of the given cell as a boolean.
:meth:`~wx.grid.GridTableBase.GetValueAsDouble`                                  Returns the value of the given cell as a double.
:meth:`~wx.grid.GridTableBase.GetValueAsLong`                                    Returns the value of the given cell as a long.
:meth:`~wx.grid.GridTableBase.GetView`                                           Returns the last grid passed to :meth:`~GridTableBase.SetView` .
:meth:`~wx.grid.GridTableBase.InsertCols`                                        Exactly the same as :meth:`~GridTableBase.InsertRows`   but for columns.
:meth:`~wx.grid.GridTableBase.InsertRows`                                        Insert additional rows into the table.
:meth:`~wx.grid.GridTableBase.IsEmpty`                                           Same as :meth:`~GridTableBase.IsEmptyCell`   but taking :ref:`wx.grid.GridCellCoords`.
:meth:`~wx.grid.GridTableBase.IsEmptyCell`                                       May be overridden to implement testing for empty cells.
:meth:`~wx.grid.GridTableBase.SetAttr`                                           Set attribute of the specified cell.
:meth:`~wx.grid.GridTableBase.SetAttrProvider`                                   Associate this attributes provider with the table.
:meth:`~wx.grid.GridTableBase.SetColAttr`                                        Set attribute of the specified column.
:meth:`~wx.grid.GridTableBase.SetColLabelValue`                                  Exactly the same as :meth:`~GridTableBase.SetRowLabelValue`   but for columns.
:meth:`~wx.grid.GridTableBase.SetCornerLabelValue`                               Set the given label for the grid's corner.
:meth:`~wx.grid.GridTableBase.SetRowAttr`                                        Set attribute of the specified row.
:meth:`~wx.grid.GridTableBase.SetRowLabelValue`                                  Set the given label for the specified row.
:meth:`~wx.grid.GridTableBase.SetValue`                                          Must be overridden to implement setting the table values as text.
:meth:`~wx.grid.GridTableBase.SetValueAsBool`                                    Sets the value of the given cell as a boolean.
:meth:`~wx.grid.GridTableBase.SetValueAsDouble`                                  Sets the value of the given cell as a double.
:meth:`~wx.grid.GridTableBase.SetValueAsLong`                                    Sets the value of the given cell as a long.
:meth:`~wx.grid.GridTableBase.SetView`                                           Called by the grid when the table is associated with it.
================================================================================ ================================================================================


|


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

================================================================================ ================================================================================
:attr:`~wx.grid.GridTableBase.AttrProvider`                                      See :meth:`~wx.grid.GridTableBase.GetAttrProvider` and :meth:`~wx.grid.GridTableBase.SetAttrProvider`
:attr:`~wx.grid.GridTableBase.ColsCount`                                         See :meth:`~wx.grid.GridTableBase.GetColsCount`
:attr:`~wx.grid.GridTableBase.CornerLabelValue`                                  See :meth:`~wx.grid.GridTableBase.GetCornerLabelValue` and :meth:`~wx.grid.GridTableBase.SetCornerLabelValue`
:attr:`~wx.grid.GridTableBase.NumberCols`                                        See :meth:`~wx.grid.GridTableBase.GetNumberCols`
:attr:`~wx.grid.GridTableBase.NumberRows`                                        See :meth:`~wx.grid.GridTableBase.GetNumberRows`
:attr:`~wx.grid.GridTableBase.RowsCount`                                         See :meth:`~wx.grid.GridTableBase.GetRowsCount`
:attr:`~wx.grid.GridTableBase.View`                                              See :meth:`~wx.grid.GridTableBase.GetView` and :meth:`~wx.grid.GridTableBase.SetView`
================================================================================ ================================================================================


|


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


.. class:: wx.grid.GridTableBase(Object)

   **Possible constructors**::

       GridTableBase()
       
   
   The almost abstract base class for grid tables.



   .. method:: __init__(self)

      Default constructor.                   





   .. method:: AppendCols(self, numCols=1)

      Exactly the same as :meth:`AppendRows`   but for columns.                  


      :param `numCols`: 
      :type `numCols`: int




      :rtype: `bool`








   .. method:: AppendRows(self, numRows=1)

      Append additional rows at the end of the table.                  

      This method is provided in addition to :meth:`InsertRows`   as some data models may only support appending rows to them but not inserting them at arbitrary locations. In such case you may implement this method only and leave :meth:`InsertRows`   unimplemented. 




      :param `numRows`: The number of rows to add.   
      :type `numRows`: int






      :rtype: `bool`



                  





   .. method:: CanGetValueAs(self, row, col, typeName)

      Returns ``True`` if the value of the given cell can be accessed as if it were of the specified type.                  

      By default the cells can only be accessed as strings. Note that a cell could be accessible in different ways, e.g. a numeric cell may return ``True`` for  ``GRID_VALUE_NUMBER``   but also for   ``GRID_VALUE_STRING``   indicating that the value can be coerced to a string form.                   


      :param `row`: 
      :type `row`: int
      :param `col`: 
      :type `col`: int
      :param `typeName`: 
      :type `typeName`: string




      :rtype: `bool`








   .. method:: CanHaveAttributes(self)

      Returns ``True`` if this table supports attributes or ``False`` otherwise.                  

      By default, the table automatically creates a :ref:`wx.grid.GridCellAttrProvider`  when this function is called if it had no attribute provider before and returns ``True``.                  

      :rtype: `bool`








   .. method:: CanMeasureColUsingSameAttr(self, col)

      Override to return ``True`` if the same attribute can be used for measuring all cells in the given column.                  

      This function is provided for optimization purposes: it returns ``False`` by default, but can be overridden to return ``True`` when all the cells in the same grid column use sensibly the same attribute, i.e. they use the same renderer (either explicitly, or implicitly, due to their type as returned by :meth:`GetTypeName` ) and the font of the same size. 

      Returning ``True`` from this function allows AutoSizeColumns() to skip looking up the attribute and the renderer for each individual cell, which results in very noticeable performance improvements for the grids with many rows. 

                


      :param `col`: 
      :type `col`: int




      :rtype: `bool`







      .. versionadded:: 4.1/wxWidgets-3.1.4  
     








   .. method:: CanSetValueAs(self, row, col, typeName)

      Returns ``True`` if the value of the given cell can be set as if it were of the specified type.                  

                


      :param `row`: 
      :type `row`: int
      :param `col`: 
      :type `col`: int
      :param `typeName`: 
      :type `typeName`: string




      :rtype: `bool`







      .. seealso:: :meth:`CanGetValueAs`     








   .. method:: Clear(self)

      Clear the table contents.                  

      This method is used by :meth:`wx.grid.Grid.ClearGrid` .                   





   .. method:: DeleteCols(self, pos=0, numCols=1)

      Exactly the same as :meth:`DeleteRows`   but for columns.                  


      :param `pos`: 
      :type `pos`: int
      :param `numCols`: 
      :type `numCols`: int




      :rtype: `bool`








   .. method:: DeleteRows(self, pos=0, numRows=1)

      Delete rows from the table.                  

      Notice that currently deleting a row intersecting a multi-cell (see SetCellSize()) is not supported and will result in a crash. 




      :param `pos`: The first row to delete.   
      :type `pos`: int
      :param `numRows`: The number of rows to delete.   
      :type `numRows`: int








      :rtype: `bool`



                  





   .. method:: GetAttr(self, row, col, kind)

      Return the attribute for the given cell.                  

      By default this function is simply forwarded to :meth:`wx.grid.GridCellAttrProvider.GetAttr`   but it may be overridden to handle attributes directly in the table. 

      Prefer to use :meth:`GetAttrPtr`   to avoid the need to call DecRef() on the returned pointer manually.                  


      :param `row`: 
      :type `row`: int
      :param `col`: 
      :type `col`: int
      :param `kind`: 
      :type `kind`: GridCellAttr.wxAttrKind




      :rtype: :ref:`wx.grid.GridCellAttr`








   .. method:: GetAttrProvider(self)

      Returns the attribute provider currently being used.                  

      This function may return ``None`` if the attribute provider hasn't been neither associated with this table by :meth:`SetAttrProvider`   nor created on demand by any other methods.                  

      :rtype: :ref:`wx.grid.GridCellAttrProvider`








   .. method:: GetAttrPtr(self, row, col, kind)

      Return the attribute for the given cell.                  

      This method is identical to :meth:`GetAttr` , but returns a smart pointer, which frees the caller from the need to call DecRef() manually. 

                


      :param `row`: 
      :type `row`: int
      :param `col`: 
      :type `col`: int
      :param `kind`: 
      :type `kind`: GridCellAttr.wxAttrKind




      :rtype: :ref:`wx.grid.GridCellAttrPtr`







      .. versionadded:: 4.1/wxWidgets-3.1.4  
     








   .. method:: GetColLabelValue(self, col)

      Return the label of the specified column.                  


      :param `col`: 
      :type `col`: int




      :rtype: `string`








   .. method:: GetColsCount(self)

      Return the number of columns in the table.                  

      This method is not virtual and is only provided as a convenience for the derived classes which can't call :meth:`GetNumberCols`   without a  ``const_cast``   from their  methods.                   

      :rtype: `int`








   .. method:: GetCornerLabelValue(self)

      Return the label of the grid's corner.                  

                

      :rtype: `string`







      .. versionadded:: 4.1/wxWidgets-3.1.2  
     








   .. method:: GetNumberCols(self)

      Must be overridden to return the number of columns in the table.                  

      For backwards compatibility reasons, this method is not const. Use :meth:`GetColsCount`   instead of it in  methods of derived table classes,                  

      :rtype: `int`








   .. method:: GetNumberRows(self)

      Must be overridden to return the number of rows in the table.                  

      For backwards compatibility reasons, this method is not const. Use :meth:`GetRowsCount`   instead of it in  methods of derived table classes.                  

      :rtype: `int`








   .. method:: GetRowLabelValue(self, row)

      Return the label of the specified row.                  


      :param `row`: 
      :type `row`: int




      :rtype: `string`








   .. method:: GetRowsCount(self)

      Return the number of rows in the table.                  

      This method is not virtual and is only provided as a convenience for the derived classes which can't call :meth:`GetNumberRows`   without a  ``const_cast``   from their  methods.                   

      :rtype: `int`








   .. method:: GetTypeName(self, row, col)

      Returns the type of the value in the given cell.                  

      By default all cells are strings and this method returns  ``GRID_VALUE_STRING`` .                   


      :param `row`: 
      :type `row`: int
      :param `col`: 
      :type `col`: int




      :rtype: `string`








   .. method:: GetValue(self, row, col)

      Must be overridden to implement accessing the table values as text.                  


      :param `row`: 
      :type `row`: int
      :param `col`: 
      :type `col`: int




      :rtype: :ref:`PyObject`








   .. method:: GetValueAsBool(self, row, col)

      Returns the value of the given cell as a boolean.                  

      This should only be called if :meth:`CanGetValueAs`   returns ``True`` when called with  ``GRID_VALUE_BOOL``   argument. Default implementation always return ``False``.                   


      :param `row`: 
      :type `row`: int
      :param `col`: 
      :type `col`: int




      :rtype: `bool`








   .. method:: GetValueAsDouble(self, row, col)

      Returns the value of the given cell as a double.                  

      This should only be called if :meth:`CanGetValueAs`   returns ``True`` when called with  ``GRID_VALUE_FLOAT``   argument. Default implementation always return 0.0.                   


      :param `row`: 
      :type `row`: int
      :param `col`: 
      :type `col`: int




      :rtype: `float`








   .. method:: GetValueAsLong(self, row, col)

      Returns the value of the given cell as a long.                  

      This should only be called if :meth:`CanGetValueAs`   returns ``True`` when called with  ``GRID_VALUE_NUMBER``   argument. Default implementation always return 0.                   


      :param `row`: 
      :type `row`: int
      :param `col`: 
      :type `col`: int




      :rtype: `long`








   .. method:: GetView(self)

      Returns the last grid passed to :meth:`SetView` .                  

      :rtype: :ref:`wx.grid.Grid`








   .. method:: InsertCols(self, pos=0, numCols=1)

      Exactly the same as :meth:`InsertRows`   but for columns.                  


      :param `pos`: 
      :type `pos`: int
      :param `numCols`: 
      :type `numCols`: int




      :rtype: `bool`








   .. method:: InsertRows(self, pos=0, numRows=1)

      Insert additional rows into the table.                  




      :param `pos`: The position of the first new row.   
      :type `pos`: int
      :param `numRows`: The number of rows to insert.   
      :type `numRows`: int








      :rtype: `bool`



                  





   .. method:: IsEmpty(self, coords)

      Same as :meth:`IsEmptyCell`   but taking :ref:`wx.grid.GridCellCoords`.                  

      Notice that this method is not virtual, only :meth:`IsEmptyCell`   should be overridden.                  


      :param `coords`: 
      :type `coords`: wx.grid.GridCellCoords




      :rtype: `bool`








   .. method:: IsEmptyCell(self, row, col)

      May be overridden to implement testing for empty cells.                  

      This method is used by the grid to test if the given cell is not used and so whether a neighbouring cell may overflow into it. By default it only returns ``True`` if the value of the given cell, as returned by :meth:`GetValue` , is empty.                  


      :param `row`: 
      :type `row`: int
      :param `col`: 
      :type `col`: int




      :rtype: `bool`








   .. method:: SetAttr(self, attr, row, col)

      Set attribute of the specified cell.                  

      By default this function is simply forwarded to :meth:`wx.grid.GridCellAttrProvider.SetAttr` . 

      The table takes ownership of `attr`, i.e. will call DecRef() on it.                  


      :param `attr`: 
      :type `attr`: wx.grid.GridCellAttr
      :param `row`: 
      :type `row`: int
      :param `col`: 
      :type `col`: int







   .. method:: SetAttrProvider(self, attrProvider)

      Associate this attributes provider with the table.                  

      The table takes ownership of `attrProvider`  pointer and will delete it when it doesn't need it any more. The pointer can be ``None``, however this won't disable attributes management in the table but will just result in a default attributes being recreated the next time any of the other functions in this section is called. To completely disable the attributes support, should this be needed, you need to override :meth:`CanHaveAttributes`   to return ``False``.                  


      :param `attrProvider`: 
      :type `attrProvider`: wx.grid.GridCellAttrProvider







   .. method:: SetColAttr(self, attr, col)

      Set attribute of the specified column.                  

      By default this function is simply forwarded to :meth:`wx.grid.GridCellAttrProvider.SetColAttr` . 

      The table takes ownership of `attr`, i.e. will call DecRef() on it.                  


      :param `attr`: 
      :type `attr`: wx.grid.GridCellAttr
      :param `col`: 
      :type `col`: int







   .. method:: SetColLabelValue(self, col, label)

      Exactly the same as :meth:`SetRowLabelValue`   but for columns.                  


      :param `col`: 
      :type `col`: int
      :param `label`: 
      :type `label`: string







   .. method:: SetCornerLabelValue(self)

      Set the given label for the grid's corner.                  

      The default version does nothing, i.e. the label is not stored. You must override this method in your derived class if you wish :meth:`wx.grid.Grid.GetCornerLabelValue`   to work. 

                


      :param ``: 
      :type ``: string






      .. versionadded:: 4.1/wxWidgets-3.1.2  
     








   .. method:: SetRowAttr(self, attr, row)

      Set attribute of the specified row.                  

      By default this function is simply forwarded to :meth:`wx.grid.GridCellAttrProvider.SetRowAttr` . 

      The table takes ownership of `attr`, i.e. will call DecRef() on it.                  


      :param `attr`: 
      :type `attr`: wx.grid.GridCellAttr
      :param `row`: 
      :type `row`: int







   .. method:: SetRowLabelValue(self, row, label)

      Set the given label for the specified row.                  

      The default version does nothing, i.e. the label is not stored. You must override this method in your derived class if you wish :meth:`wx.grid.Grid.SetRowLabelValue`   to work.                  


      :param `row`: 
      :type `row`: int
      :param `label`: 
      :type `label`: string







   .. method:: SetValue(self, row, col, value)

      Must be overridden to implement setting the table values as text.                  


      :param `row`: 
      :type `row`: int
      :param `col`: 
      :type `col`: int
      :param `value`: 
      :type `value`: string







   .. method:: SetValueAsBool(self, row, col, value)

      Sets the value of the given cell as a boolean.                  

      This should only be called if :meth:`CanSetValueAs`   returns ``True`` when called with  ``GRID_VALUE_BOOL``   argument. Default implementation doesn't do anything.                   


      :param `row`: 
      :type `row`: int
      :param `col`: 
      :type `col`: int
      :param `value`: 
      :type `value`: bool







   .. method:: SetValueAsDouble(self, row, col, value)

      Sets the value of the given cell as a double.                  

      This should only be called if :meth:`CanSetValueAs`   returns ``True`` when called with  ``GRID_VALUE_FLOAT``   argument. Default implementation doesn't do anything.                   


      :param `row`: 
      :type `row`: int
      :param `col`: 
      :type `col`: int
      :param `value`: 
      :type `value`: float







   .. method:: SetValueAsLong(self, row, col, value)

      Sets the value of the given cell as a long.                  

      This should only be called if :meth:`CanSetValueAs`   returns ``True`` when called with  ``GRID_VALUE_NUMBER``   argument. Default implementation doesn't do anything.                   


      :param `row`: 
      :type `row`: int
      :param `col`: 
      :type `col`: int
      :param `value`: 
      :type `value`: long







   .. method:: SetView(self, grid)

      Called by the grid when the table is associated with it.                  

      The default implementation stores the pointer and returns it from its :meth:`GetView`   and so only makes sense if the table cannot be associated with more than one grid at a time.                  


      :param `grid`: 
      :type `grid`: wx.grid.Grid







   .. attribute:: AttrProvider

      See :meth:`~wx.grid.GridTableBase.GetAttrProvider` and :meth:`~wx.grid.GridTableBase.SetAttrProvider`


   .. attribute:: ColsCount

      See :meth:`~wx.grid.GridTableBase.GetColsCount`


   .. attribute:: CornerLabelValue

      See :meth:`~wx.grid.GridTableBase.GetCornerLabelValue` and :meth:`~wx.grid.GridTableBase.SetCornerLabelValue`


   .. attribute:: NumberCols

      See :meth:`~wx.grid.GridTableBase.GetNumberCols`


   .. attribute:: NumberRows

      See :meth:`~wx.grid.GridTableBase.GetNumberRows`


   .. attribute:: RowsCount

      See :meth:`~wx.grid.GridTableBase.GetRowsCount`


   .. attribute:: View

      See :meth:`~wx.grid.GridTableBase.GetView` and :meth:`~wx.grid.GridTableBase.SetView`

