Skip to content

Border-subtitle-align

The border-subtitle-align style sets the horizontal alignment for the border subtitle.

Syntax

border-subtitle-align: <horizontal>;

The border-subtitle-align style takes a <horizontal> that determines where the border subtitle is aligned along the top edge of the border. This means that the border corners are always visible.

Default

The default alignment is right.

Examples

Basic usage

This example shows three labels, each with a different border subtitle alignment:

BorderSubtitleAlignApp ──────────────────────────────────────────────────────────────────────────── My subtitle is on the left.  < Left ─────────────────────────────────────────────────────────────────── ╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍ My subtitle is centered ╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍ Centered! ╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍╍ ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔ My subtitle is on the right ▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁ Right > 

from textual.app import App
from textual.widgets import Label


class BorderSubtitleAlignApp(App):
    CSS_PATH = "border_subtitle_align.tcss"

    def compose(self):
        lbl = Label("My subtitle is on the left.", id="label1")
        lbl.border_subtitle = "< Left"
        yield lbl

        lbl = Label("My subtitle is centered", id="label2")
        lbl.border_subtitle = "Centered!"
        yield lbl

        lbl = Label("My subtitle is on the right", id="label3")
        lbl.border_subtitle = "Right >"
        yield lbl


if __name__ == "__main__":
    app = BorderSubtitleAlignApp()
    app.run()
#label1 {
    border: solid $secondary;
    border-subtitle-align: left;
}

#label2 {
    border: dashed $secondary;
    border-subtitle-align: center;
}

#label3 {
    border: tall $secondary;
    border-subtitle-align: right;
}

Screen > Label {
    width: 100%;
    height: 5;
    content-align: center middle;
    color: white;
    margin: 1;
    box-sizing: border-box;
}

Complete usage reference

This example shows all border title and subtitle alignments, together with some examples of how (sub)titles can have custom markup. Open the code tabs to see the details of the code examples.

BorderSubTitleAlignAll Border titleLef…▁▁▁▁Left▁▁▁▁ This is the story ofa Pythondeveloper that Border subtitleCen…▔▔▔▔@@@▔▔▔▔▔ +--------------+Title───────────────── |had to fill up|nine labelsand ended up redoing it +-Left-------+──────────────Subtitle Title, but really looo… Title, but r…Title, but reall… because the first tryhad some labelsthat were too long. Subtitle, bu…Subtitle, but re… Subtitle, but really l…

from textual.app import App
from textual.containers import Container, Grid
from textual.widgets import Label


def make_label_container(  # (11)!
    text: str, id: str, border_title: str, border_subtitle: str
) -> Container:
    lbl = Label(text, id=id)
    lbl.border_title = border_title
    lbl.border_subtitle = border_subtitle
    return Container(lbl)


class BorderSubTitleAlignAll(App[None]):
    CSS_PATH = "border_sub_title_align_all.tcss"

    def compose(self):
        with Grid():
            yield make_label_container(  # (1)!
                "This is the story of",
                "lbl1",
                "[b]Border [i]title[/i][/]",