Table Selections and Highlights¶
Data Type of Table Selections¶
You’ll get table selections using selections
property as a SelectionRanges
object. For instance, you opened a sample data
viewer.open_sample("iris")
and selected cells that correspond to df.iloc[0:100, 0:1]
and df.iloc[2:3, 2:3]
,
you’ll get following selection ranges.
table.selections
SelectionRanges([0:100, 0:1], [2:3, 2:3])
A SelectionRanges
object is a list
like object. Each selection is a
tuple[slice, slice]
object.
table.selections[0]
(slice(0, 100, None), slice(0, 1, None))
Thus, you can use them directly in iloc
method of DataFrame
.
table.data.iloc[table.selections[0]]
More simply, you can use values
attribute to get values of selected table.
table.selections.values[0]
sepal_length
0 5.1
1 4.9
2 4.7
3 4.6
4 5.0
.. ...
95 5.7
96 5.7
97 6.2
98 5.1
99 5.7
[100 rows x 1 columns]
To update selections, you can use list
-like methods:
table.selections.append((slice(0, 10, None), slice(0, 1, None)))
table.selections.pop(0)
or directly set a list to selections
.
table.selections = [(slice(0, 10, None), slice(0, 1, None))]
Catch Changes in Table Selections¶
You can bind a callback function that will get called on every selection change event.
The events
attribute is a SignalGroup
object of
psygnal.
table.events.selections.connect()
registers a callback function to table events.
@table.events.selections.connect
def _on_change(sel):
print(sel)
Set Highlights¶
“Highlight” is another feature of a table. Similar to a selection, a highlight is also represented as a tuple of slices. Highlightened cells in a table are always painted.
Differences between a selection and a highlight are:
Highlights cannot be set as dynamically as selections. You have to convert selections into highlights from right-click context menu or programatically using attribute
highlights
.Highlights do not vanish with mouse or keyboard operations.
Highlights do not emit signals.