Skip to content

Latest commit

 

History

History
124 lines (91 loc) · 3.16 KB

widget.md

File metadata and controls

124 lines (91 loc) · 3.16 KB
jupytext kernelspec
formats notebook_metadata_filter text_representation
md:myst
-jupytext.text_representation.jupytext_version
extension format_name format_version
.md
myst
0.13
display_name language name
itables
python
itables

Jupyter Widget

ITables is available as a Jupyter Widget since v2.2.

The ITable widget

The ITable widget has a few dependencies (essentially AnyWidget, a great widget development framework!) that you can install with

pip install itables[widget]

The ITable class accepts the same arguments as the show method, but the df argument is optional.

from itables.sample_dfs import get_dict_of_test_dfs
from itables.widget import ITable

df = get_dict_of_test_dfs()["int_float_str"]

table = ITable(df, selected_rows=[0, 2, 5], select=True)
table
The table shown above does not reflect the initial row selection.
This is because the `ITable` widget was updated with
more row selection commands, see below.

The selected_rows traits

The selected_rows attribute of the ITable object provides a view on the rows that have been selected in the table (remember to pass select=True to activate the row selection). You can use it to either retrieve or change the current row selection:

table.selected_rows
table.selected_rows = [3, 4]

The df property

Use it to retrieve the table data:

table.df.iloc[table.selected_rows]

or to update it

table.df = df.head(6)
`ITable` will raise an `IndexError` if the `selected_rows` are not consistent with the
updated data. If you need to update the two simultaneously, use `table.update(df, selected_rows=...)`, see below.

The caption, style and classes traits

You can update these traits from Python, e.g.

table.caption = "numbers and strings"

The update method

Last but not least, you can update the ITable arguments simultaneously using the update method:

table.update(df.head(20), selected_rows=[7, 8])

Limitations

Compared to show, the ITable widget has the same limitations as the Streamlit component, e.g. structured headers are not available, you can't pass JavaScript callback, etc.

The good news is that if you only want to display the table, you do not need the ITable widget. Below is an example in which we use show to display a different table depending on the value of a drop-down component:

import ipywidgets as widgets
from itables import show
from itables.sample_dfs import get_dict_of_test_dfs

def use_show_in_interactive_output(table_name: str):
    show(
        sample_dfs[table_name],
        caption=table_name,
    )

sample_dfs = get_dict_of_test_dfs()
table_selector = widgets.Dropdown(options=sample_dfs.keys(), value="int_float_str")

out = widgets.interactive_output(
    use_show_in_interactive_output, {"table_name": table_selector}
)

widgets.VBox([table_selector, out])