Shiny for Python bindings for Tabulator JS
- Support for Shiny core and Shiny Express
- Pagination
- Filters
- Editor with undo and redo (History interaction)
- Grouping
- Sorting
- Column calculations
- Downloads
- Themes
- Reactivity
# Stable
pip install pytabulator
# Dev
pip install git+https://github.com/eodaGmbH/py-tabulator
import pandas as pd
from pytabulator import TableOptions, render_data_frame
from shiny import render
from shiny.express import input, ui
ui.div("Click on row to print name", style="padding: 10px;")
@render.code
async def txt():
print(input.tabulator_row_clicked())
return input.tabulator_row_clicked()["Name"]
@render_data_frame(table_options=TableOptions(height=500))
def tabulator():
return pd.read_csv(
"https://raw.githubusercontent.com/datasciencedojo/datasets/master/titanic.csv"
)
# uvicorn docs.examples.getting_started.shiny_core_basic:app
import pandas as pd
from pytabulator import TableOptions, Tabulator, output_tabulator, render_tabulator
from shiny import App, render, ui
app_ui = ui.page_fluid(
ui.output_text_verbatim("txt", placeholder=True),
output_tabulator("tabulator"),
)
def server(input, output, session):
@render_tabulator
def tabulator():
df = pd.read_csv(
"https://raw.githubusercontent.com/datasciencedojo/datasets/master/titanic.csv"
)
return Tabulator(df, table_options=TableOptions(height=311))
@render.code
async def txt():
print(input.tabulator_row_clicked())
return str(input.tabulator_row_clicked())
app = App(app_ui, server)
Run detailed example:
shiny run docs/examples/getting_started/shiny_express_all.py
poetry install
poetry run pytest
npm install
npm run prettier
npm run build