Skip to content

Strip

A Strip contains the result of rendering a widget. See line API for how to use Strips.

Strip class

def __init__(self, segments, cell_length=None):

Represents a 'strip' (horizontal line) of a Textual Widget.

A Strip is like an immutable list of Segments. The immutability allows for effective caching.

Parameters
Name Type Description Default
segments Iterable[Segment]

An iterable of segments.

required
cell_length int | None

The cell length if known, or None to calculate on demand.

None

cell_length property

cell_length: int

Get the number of cells required to render this object.

link_ids: set[str]

A set of the link ids in this Strip.

text property

text: str

Segment text.

adjust_cell_length method

def adjust_cell_length(self, cell_length, style=None):

Adjust the cell length, possibly truncating or extending.

Parameters
Name Type Description Default
cell_length int

New desired cell length.

required
style Style | None

Style when extending, or None.

None
Returns
Type Description
Strip

A new strip with the supplied cell length.

apply_filter method

def apply_filter(self, filter, background):

Apply a filter to all segments in the strip.

Parameters
Name Type Description Default
filter LineFilter

A line filter object.

required
Returns
Type Description
Strip

A new Strip.

apply_style method

def apply_style(self, style):

Apply a style to the Strip.

Parameters
Name Type Description Default
style Style

A Rich style.

required
Returns
Type Description
Strip

A new strip.

blank classmethod

def blank(cls, cell_length, style=None):

Create a blank strip.

Parameters
Name Type Description Default
cell_length int

Desired cell length.

required
style StyleType | None

Style of blank.

None
Returns
Type Description
Strip

New strip.

crop method

def crop(self, start, end=None):

Crop a strip between two cell positions.

Parameters
Name Type Description Default
start int

The start cell position (inclusive).

required
end int | None

The end cell position (exclusive).

None
Returns
Type Description
Strip

A new Strip.

crop_extend method

def crop_extend(self, start, end, style):

Crop between two points, extending the length if required.

Parameters
Name Type Description Default
start int

Start offset of crop.

required
end int

End offset of crop.

required
style Style | None

Style of additional padding.

required
Returns
Type Description
Strip

New cropped Strip.

divide method

def divide(self, cuts):

Divide the strip in to multiple smaller strips by cutting at given (cell) indices.

Parameters
Name Type Description Default
cuts Iterable[int]

An iterable of cell positions as ints.

required
Returns
Type Description
Sequence[Strip]

A new list of strips.

extend_cell_length method

def extend_cell_length(self, cell_length, style=None):

Extend the cell length if it is less than the given value.

Parameters
Name Type Description Default
cell_length int

Required minimum cell length.

required
style Style | None

Style for padding if the cell length is extended.

None
Returns
Type Description
Strip

A new Strip.

from_lines classmethod

def from_lines(cls, lines, cell_length=None):

Convert lines (lists of segments) to a list of Strips.

Parameters
Name Type Description Default
lines list[list[Segment]]

List of lines, where a line is a list of segments.

required
cell_length int | None

Cell length of lines (must be same) or None if not known.

None
Returns
Type Description
list[Strip]

List of strips.

index_to_cell_position method

def index_to_cell_position(self, index):

Given a character index, return the cell position of that character. This is the sum of the cell lengths of all the characters before the character at index.

Parameters
Name Type Description Default
index int

The index to convert.

required
Returns
Type Description
int

The cell position of the character at index.

join classmethod

def join(cls, strips):

Join a number of strips in to one.

Parameters
Name Type Description Default
strips Iterable[Strip | None]

An iterable of Strips.

required
Returns
Type Description
Strip

A new combined strip.

simplify method

def simplify(self):

Simplify the segments (join segments with same style)

Returns
Type Description
Strip

New strip.

def style_links(self, link_id, link_style):

Apply a style to Segments with the given link_id.

Parameters
Name Type Description Default
link_id str

A link id.

required
link_style Style

Style to apply.

required
Returns
Type Description
Strip

New strip (or same Strip if no changes).

StripRenderable class

def __init__(self, strips):

A renderable which renders a list of strips in to lines.

get_line_length function

def get_line_length(segments):

Get the line length (total length of all segments).

Parameters
Name Type Description Default
segments Iterable[Segment]

Iterable of segments.

required
Returns
Type Description
int

Length of line in cells.