The Tree widget renders interactive collapsible tree views using
tui-tree-widget.
Quick Start
from pyratatui import Tree, TreeItem, TreeState, Block
items = [
TreeItem("Documents", [
TreeItem("report.pdf"),
TreeItem("notes.md"),
]),
TreeItem("Downloads"),
]
tree = Tree(items).block(Block().bordered().title(" Files "))
state = TreeState()
# In render loop:
# frame.render_stateful_tree(tree, area, state)
Keyboard Navigation
ev = term.poll_event(timeout_ms=100)
if ev:
if ev.code == "Up": state.key_up()
if ev.code == "Down": state.key_down()
if ev.code == "Left": state.key_left()
if ev.code == "Right": state.key_right()
API
TreeItem(text, children=None)
| Method |
Description |
.text |
Node text |
.children |
Child items |
.with_child(child) |
Return new item with child appended |
Tree(items)
| Method |
Description |
.block(block) |
Wrap in a border block |
.highlight_style(style) |
Style for selected item |
.highlight_symbol(sym) |
Prefix for selected item |
.len |
Number of top-level items |
TreeState()
| Method |
Description |
.selected |
Current selection path or None |
.select(path) |
Select node by ID path |
.open(path) / .close(path) |
Expand / collapse |
.toggle(path) |
Toggle open/close |
.key_up() / .key_down() |
Navigate |
.key_left() / .key_right() |
Collapse / expand |
Rendering
frame.render_stateful_tree(tree, area, state)
See examples/27_tree_widget.py.