# Urwidtrees

This is a Widget Container API for the `urwid` toolkit. It uses a MVC approach and allows to build trees of widgets. Its design goals are

- clear separation classes that define, decorate and display trees of widgets

- representation of trees by local operations on node positions

- easy to use default implementation for simple trees

- Collapses are considered decoration

Generally, tree structures are defined by subclassing `Tree` and overwriting local position movements. For most purposes however, using a `SimpleTree` will do. The choice to define trees by overwriting local position movements allows to easily define potentially infinite tree structures. See example4 for how to walk local file systems.

Trees of widgets are rendered by `TreeBox` widgets. These are based on urwids `ListBox` widget and display trees such that siblings grow vertically and children horizontally. TreeBoxes handle key presses to move in the tree and collapse/expand subtrees if possible.

- Structure
- Containers
- Decoration
- Examples

# Indices and tables

- Index

- Module Index

- Search Page