Skip to content


The display property defines whether a widget is displayed or not.


display: [none|block];


Value Description
block (default) Display the widget as normal
none The widget not be displayed, and space will no longer be reserved for it.


Note that the second widget is hidden by adding the "remove" class which sets the display style to None.

from import App
from textual.widgets import Static

class DisplayApp(App):
    def compose(self):
        yield Static("Widget 1")
        yield Static("Widget 2", classes="remove")
        yield Static("Widget 3")

app = DisplayApp(css_path="display.css")
Screen {
    background: green;
Static {             
    height: 5;        
    background: white;        
    color: blue;   
    border: heavy blue;     
Static.remove {
    display: none;

DisplayApp ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ ┃Widget 1 ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛ ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ ┃Widget 3 ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛


/* Widget is on screen */
display: block;

/* Widget is not on the screen */
display: none;


# Hide the widget
self.styles.display = "none"

# Show the widget again
self.styles.display = "block"

There is also a shortcut to show / hide a widget. The display property on Widget may be set to True or False to show or hide the widget.

# Hide the widget
widget.display = False

# Show the widget
widget.display = True