Tree#
The tree widget is still under development.
Usage#
import toga
tree = toga.Tree(['Navigate'])
tree.insert(None, None, 'root1')
root2 = tree.insert(None, None, 'root2')
tree.insert(root2, None, 'root2.1')
root2_2 = tree.insert(root2, None, 'root2.2')
tree.insert(root2_2, None, 'root2.2.1')
tree.insert(root2_2, None, 'root2.2.2')
tree.insert(root2_2, None, 'root2.2.3')
Reference#
- class toga.widgets.tree.Tree(headings, id=None, style=None, data=None, accessors=None, multiple_select=False, on_select=None, on_double_click=None, factory=None)#
Tree Widget.
- Parameters:
headings – The list of headings for the interface.
id – An identifier for this widget.
style – An optional style object. If no style is provided then a new one will be created for the widget.
data –
The data to display in the widget. Can be an instance of
TreeSource
, a list, dict or tuple with data to display in the tree widget, or a class instance which implements the interface ofTreeSource
. Entries can be:any Python object
value
with a string representation. This string will be shown in the widget. Ifvalue
has an attributeicon
, instance of (Icon
), the icon will be shown in front of the text.a tuple
(icon, value)
where again the string representation ofvalue
will be used as text.
accessors – Optional; a list of attributes to access the value in the columns. If not given, the headings will be taken.
multiple_select – Boolean; if
True
, allows for the selection of multiple rows. Defaults toFalse
.on_select – A handler to be invoked when the user selects one or multiple rows.
on_double_click – A handler to be invoked when the user double clicks a row.
- MIN_HEIGHT = 100#
- MIN_WIDTH = 100#
- add(*children)#
Add the provided widgets as children of this widget.
If a node already has a different parent, it will be moved over. This does nothing if a node already is a child of this node.
Raises
ValueError
if this widget cannot have children.- Parameters:
children – The widgets to add as children of this widget.
- property app#
The App to which this widget belongs.
When setting the app for a widget, all children of this widget will be recursively assigned to the same app.
Raises
ValueError
if the widget is already associated with another app.
- property can_have_children#
Determine if the node can have children.
This does not resolve whether there actually are any children; it only confirms whether children are theoretically allowed.
- property children#
The children of this node. This always returns a list, even if the node is a leaf and cannot have children.
- Returns:
A list of the children for this widget.
- property data#
The data source of the tree :rtype:
dict
- Type:
returns
- property enabled#
Is the widget currently enabled? i.e., can the user interact with the widget?
- focus()#
Set this widget to have the current input focus.
- property id#
The node identifier. This id can be used to target styling directives.
- insert(index, child)#
Insert a widget as a child of this widget.
If the node already has a parent, ownership of the widget will be transferred.
Raises
ValueError
if this node cannot have children.- Parameters:
index – The position in the list of children where the new widget should be added.
child – The child to insert as a child of this node.
- property multiple_select#
Does the table allow multiple rows to be selected?
- property on_double_click#
The callable function for when a node on the Tree is selected. The provided callback function has to accept two arguments tree (
Tree
) and node (Node
orNone
).- Return type:
callable
- property on_select#
The callable function for when a node on the Tree is selected. The provided callback function has to accept two arguments tree (
Tree
) and node (Node
orNone
).- Return type:
callable
- property parent#
The parent of this node.
- Returns:
The parent of this node. Returns None if this node is the root node.
- refresh()#
Refresh the layout and appearance of the tree this node is contained in.
- refresh_sublayouts()#
- remove(*children)#
Remove the provided widgets as children of this node.
This does nothing if a given node is not a child of this node.
Raises
ValueError
if this node is a leaf, and cannot have children.- Parameters:
children – The child nodes to remove.
- property root#
The root of the tree containing this node.
- Returns:
The root node. Returns self if this node is the root node.
- property selection#
The current selection of the table.
A value of None indicates no selection. If the tree allows multiple selection, returns a list of selected data nodes. Otherwise, returns a single data node.
- property tab_index#
The position of the widget in the focus chain for the window.
- property window#
The window to which this widget belongs.
When setting the window for a widget, all children of this widget will be recursively assigned to the same window.