SortModel[T]
from slint import SortModelSortModel is a Model that provides the rows of a source model in
sorted order.
Like sorted(), it orders the rows by the result of the key function,
or by the rows themselves without a key, and in descending order with
reverse=True.
To sort by a comparison function, pass key=functools.cmp_to_key(compare).
Rows with a float NaN key sort last, followed by rows whose key raises an
exception, regardless of reverse.
Keys that can’t be ordered, such as tuples that contain NaN, raise ValueError.
The SortModel follows the changes of the source model. Setting a row sets the corresponding row of the source model.
names = slint.ListModel(["Max", "Hans", "Roman"])sorted_names = slint.SortModel(names)assert list(sorted_names) == ["Hans", "Max", "Roman"]by_length = slint.SortModel(names, key=len, reverse=True)Alternatively, subclass SortModel and implement sort_key.
Call reset when the order changes for reasons other than a change of
the source model.
Bases: _WritableAdapterModel[T]
Properties
Section titled “Properties”source_model
Section titled “source_model”source_modelMethods
Section titled “Methods”sort_key
Section titled “sort_key”sort_key(row_data: T) -> AnyReturns the value to order row_data, a row of the source model, by.
The default implementation returns row_data itself.
Re-implement this method in a sub-class that doesn’t pass a key to the
constructor.
reset() -> NoneSorts all rows of the source model again. Call this when the order changes for reasons other than a change of the source model.
unsorted_row
Section titled “unsorted_row”Returns the index of the row of the source model that is row in this model.
Raises IndexError if row is out of range.
notify_row_changed
Section titled “notify_row_changed”Call this method from a sub-class to notify the views that a row has changed.
notify_row_removed
Section titled “notify_row_removed”Call this method from a sub-class to notify the views that
count rows have been removed starting at row.
notify_row_added
Section titled “notify_row_added”Call this method from a sub-class to notify the views that
count rows have been added starting at row.
set_row_data
Section titled “set_row_data”Sets the row of the source model that corresponds to row.
Raises IndexError if row is out of range.
row_count
Section titled “row_count”row_count() -> introw_data
Section titled “row_data”row_data(row: int) -> T | Nonepush_row
Section titled “push_row”push_row(value: T) -> NoneAdd a new row to the model with the provided value.
The default implementation calls insert_row with the row count.
remove_row
Section titled “remove_row”Remove the row at the given index.
Raises an exception when the model rejects the modification.
The default implementation raises NotImplementedError. A model that
supports removing rows should also call notify_row_removed.
insert_row
Section titled “insert_row”Insert a new row at the given index.
Raises an exception when the model rejects the modification.
The default implementation raises NotImplementedError. A model that
supports inserting rows should also call notify_row_added.
© 2026 SixtyFPS GmbH