File: grid_overview.rst

package info (click to toggle)
wxpython4.0 4.2.3%2Bdfsg-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 221,752 kB
  • sloc: cpp: 962,555; python: 230,573; ansic: 170,731; makefile: 51,756; sh: 9,342; perl: 1,564; javascript: 584; php: 326; xml: 200
file content (149 lines) | stat: -rw-r--r-- 6,701 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
.. include:: headings.inc


.. _grid overview:

=================================================
|phoenix_title|  **Grid Overview**
=================================================


:class:`~wx.grid.Grid` and its related classes are used for displaying
and editing tabular data.

:class:`~wx.grid.Grid` supports custom attributes for the table cells,
allowing to completely customize its appearance and uses a separate
grid table (:class:`~wx.grid.GridTableBase` -derived) class for the
data management meaning that it can be used to display arbitrary
amounts of data.


.. _grid getting started:

Getting Started
---------------

For simple applications you need only refer to the
:class:`~wx.grid.Grid` class in your code.  This example shows how you
might create a grid in a frame or dialog constructor and illustrates
some of the formatting functions::

    import wx
    import wx.grid

    class GridFrame(wx.Frame):
        def __init__(self, parent):
            wx.Frame.__init__(self, parent)

            # Create a wxGrid object
            grid = wx.grid.Grid(self, -1)

            # Then we call CreateGrid to set the dimensions of the grid
            # (100 rows and 10 columns in this example)
            grid.CreateGrid(100, 10)

            # We can set the sizes of individual rows and columns
            # in pixels
            grid.SetRowSize(0, 60)
            grid.SetColSize(0, 120)

            # And set grid cell contents as strings
            grid.SetCellValue(0, 0, 'wxGrid is good')

            # We can specify that some cells are read.only
            grid.SetCellValue(0, 3, 'This is read.only')
            grid.SetReadOnly(0, 3)

            # Colours can be specified for grid cell contents
            grid.SetCellValue(3, 3, 'green on grey')
            grid.SetCellTextColour(3, 3, wx.GREEN)
            grid.SetCellBackgroundColour(3, 3, wx.LIGHT_GREY)

            # We can specify the some cells will store numeric
            # values rather than strings. Here we set grid column 5
            # to hold floating point values displayed with width of 6
            # and precision of 2
            grid.SetColFormatFloat(5, 6, 2)
            grid.SetCellValue(0, 6, '3.1415')

            self.Show()


    if __name__ == '__main__':

        app = wx.App(0)
        frame = GridFrame(None)
        app.MainLoop()


Here is a list of classes related to :class:`~wx.grid.Grid`:

- :class:`~wx.grid.Grid`: The main grid control class itself.
- :class:`~wx.grid.GridTableBase`: The base class for grid data provider.
- :class:`~wx.grid.GridStringTable`: Simple :class:`~wx.grid.GridTableBase` implementation
  supporting only string data items and storing them all in memory (hence suitable
  for not too large grids only).
- :class:`~wx.grid.GridCellAttr`: A cell attribute, allowing to customize its appearance
  as well as the renderer and editor used for displaying and editing it.
- :class:`~wx.grid.GridCellAttrProvider`: The object responsible for storing and retrieving the cell attributes.
- :class:`~wx.grid.GridColLabelWindow`: The window showing the grid columns labels.
- :class:`~wx.grid.GridRowLabelWindow`: The window showing the grid rows labels.
- :class:`~wx.grid.GridCornerLabelWindow`: The window used in the upper left grid corner.
- :class:`~wx.grid.GridWindow`: The window representing the main part of the grid.
- :class:`~wx.grid.GridCellRenderer`: Base class for objects used to display a cell value.
- :class:`~wx.grid.GridCellStringRenderer`: Renderer showing the cell as a text string.
- :class:`~wx.grid.GridCellNumberRenderer`: Renderer showing the cell as an integer number.
- :class:`~wx.grid.GridCellFloatRenderer`: Renderer showing the cell as a floating point number.
- :class:`~wx.grid.GridCellBoolRenderer`: Renderer showing the cell as checked or unchecked box.
- :class:`~wx.grid.GridCellEditor`: Base class for objects used to edit the cell value.
- :class:`~wx.grid.GridCellStringEditor`: Editor for cells containing text strings.
- :class:`~wx.grid.GridCellNumberEditor`: Editor for cells containing integer numbers.
- :class:`~wx.grid.GridCellFloatEditor`: Editor for cells containing floating point numbers.
- :class:`~wx.grid.GridCellBoolEditor`: Editor for boolean-valued cells.
- :class:`~wx.grid.GridCellChoiceEditor`: Editor allowing to choose one of the predefined strings (and possibly enter new one).
- :class:`~wx.grid.GridEvent`: The event sent by most of :class:`~wx.grid.Grid` actions.
- :class:`~wx.grid.GridSizeEvent`: The special event sent when a grid column or row is resized.
- :class:`~wx.grid.GridRangeSelectEvent`: The special event sent when a range of cells is selected in the grid.
- :class:`~wx.grid.GridEditorCreatedEvent`: The special event sent when a cell editor is created.
- :class:`~wx.grid.GridSelection`: The object efficiently representing the grid selection.
- :class:`~wx.grid.GridTypeRegistry`: Contains information about the data types supported by the grid.



.. _grid column and row sizes:

Column and Row Sizes
--------------------

.. note::

   This section will discuss the resizing of :class:`~wx.grid.Grid` rows
   only to avoid repetitions but everything in it also applies to grid
   columns, just replace Row in the method names with Col.


Initially all :class:`~wx.grid.Grid` rows have the same height, which
can be modified for all of them at once using
:meth:`~wx.grid.Grid.SetDefaultRowSize`. However, unlike simpler
controls such as :class:`wx.ListBox` or :class:`wx.ListCtrl`,
:class:`~wx.grid.Grid` also allows its rows to be individually resized
to have their own height using :meth:`~wx.grid.Grid.SetRowSize` (as a
special case, a row may be hidden entirely by setting its size to 0,
which is done by a helper :meth:`~wx.grid.Grid.HideRow` method). It is
also possible to resize a row to fit its contents with
:meth:`~wx.grid.Grid.AutoSizeRow` or do it for all rows at once with
:meth:`~wx.grid.Grid.AutoSizeRows`.

Additionally, by default the user can also drag the row separator
lines to resize the rows interactively.  This can be forbidden
completely by calling :meth:`~wx.grid.Grid.DisableDragRowSize` or just
for the individual rows using :meth:`~wx.grid.Grid.DisableRowResize`.

If you do allow the user to resize the grid rows, it may be a good
idea to save their heights and restore it when the grid is recreated
the next time (possibly during a next program execution): the
functions :meth:`~wx.grid.Grid.GetRowSizes` and
:meth:`~wx.grid.Grid.SetRowSizes` can help with this, you will just
need to serialize :class:`~wx.grid.GridSizesInfo` structure returned
by the former in some way and deserialize it back before calling the
latter.