#!/usr/bin/env python3 from nicegui import ui, events columns = [ {"name": "name", "label": "Name", "field": "name", "align": "left"}, {"name": "age", "label": "Age", "field": "age"}, ] rows = [ {"id": 0, "name": "Alice", "age": 18}, {"id": 1, "name": "Bob", "age": 21}, {"id": 2, "name": "Carol", "age": 20}, ] def rename(e: events.GenericEventArguments) -> None: for row in rows: if row["id"] == e.args["id"]: row.update(e.args) ui.notify(f"Table.rows is now: {table.rows}") def delete(e: events.GenericEventArguments) -> None: rows[:] = [row for row in rows if row["id"] != e.args["id"]] ui.notify(f"Delete {e.args['id']}") table.update() def addrow() -> None: newid = max(dx["id"] for dx in rows) + 1 rows.append({"id": newid, "name": "New guy", "age": 21}) ui.notify(f"Added new row with id {newid}") table.update() table = ui.table(columns=columns, rows=rows, row_key="name").classes("w-72") table.add_slot( "header", r""" {{ col.label }} """, ) table.add_slot( "body", r""" {{ props.row.name }} {{ props.row.age }} """, ) table.add_slot( "bottom-row", r""" """, ) table.on("rename", rename) table.on("delete", delete) table.on("addrow", addrow) ui.run()