textual.screen
This module contains the Screen
class and related objects.
The Screen
class is a special widget which represents the content in the terminal. See Screens for details.
ScreenResultCallbackType
module-attribute
¶
ScreenResultCallbackType = Union[
Callable[[Optional[ScreenResultType]], None],
Callable[[Optional[ScreenResultType]], Awaitable[None]],
]
Type of a screen result callback function.
ScreenResultType
module-attribute
¶
ScreenResultType = TypeVar('ScreenResultType')
The result type of a screen.
ModalScreen
¶
Bases: Screen[ScreenResultType]
A screen with bindings that take precedence over the App's key bindings.
The default styling of a modal screen will dim the screen underneath.
ResultCallback
¶
Bases: Generic[ScreenResultType]
Holds the details of a callback.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
|
MessagePump
|
The object making a request for the callback. |
required |
|
ScreenResultCallbackType[ScreenResultType] | None
|
The callback function. |
required |
|
Future[ScreenResultType] | None
|
A Future to hold the result. |
None
|
Screen
¶
Bases: Generic[ScreenResultType]
, Widget
The base class for screens.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
|
str | None
|
The name of the screen. |
None
|
|
str | None
|
The ID of the screen in the DOM. |
None
|
|
str | None
|
The CSS classes for the screen. |
None
|
ALLOW_IN_MAXIMIZED_VIEW
class-attribute
¶
A selector for the widgets (direct children of Screen) that are allowed in the maximized view (in addition to maximized widget). Or
None
to default to App.ALLOW_IN_MAXIMIZED_VIEW
AUTO_FOCUS
class-attribute
¶
A selector to determine what to focus automatically when the screen is activated.
The widget focused is the first that matches the given CSS selector.
Set to None
to inherit the value from the screen's app.
Set to ""
to disable auto focus.
COMMANDS
class-attribute
¶
COMMANDS = set()
Command providers used by the command palette, associated with the screen.
Should be a set of command.Provider
classes.
CSS
class-attribute
¶
Inline CSS, useful for quick scripts. Rules here take priority over CSS_PATH.
Note
This CSS applies to the whole app.
CSS_PATH
class-attribute
¶
File paths to load CSS from.
Note
This CSS applies to the whole app.
ESCAPE_TO_MINIMIZE
class-attribute
¶
Use escape key to minimize (potentially overriding bindings) or None
to defer to App.ESCAPE_TO_MINIMIZE
.
SUB_TITLE
class-attribute
¶
A class variable to set the default sub-title for the screen.
This overrides the app sub-title. To update the sub-title while the screen is running, you can set the sub_title attribute.
TITLE
class-attribute
¶
A class variable to set the default title for the screen.
This overrides the app title. To update the title while the screen is running, you can set the title attribute.
active_bindings
property
¶
Get currently active bindings for this screen.
If no widget is focused, then app-level bindings are returned. If a widget is focused, then any bindings present in the screen and app are merged and returned.
This property may be used to inspect current bindings.
Returns:
Type | Description |
---|---|
dict[str, ActiveBinding]
|
A map of keys to a tuple containing (NAMESPACE, BINDING, ENABLED). |
bindings_updated_signal
instance-attribute
¶
bindings_updated_signal = Signal(self, 'bindings_updated')
A signal published when the bindings have been updated
layers
property
¶
maximized
class-attribute
instance-attribute
¶
The currently maximized widget, or None
for no maximized widget.
screen_layout_refresh_signal
instance-attribute
¶
screen_layout_refresh_signal = Signal(
self, "layout-refresh"
)
The signal that is published when the screen's layout is refreshed.
stack_updates
class-attribute
instance-attribute
¶
An integer that updates when the screen is resumed.
sub_title
class-attribute
instance-attribute
¶
Screen sub-title to override the app sub-title.
action_dismiss
async
¶
action_dismiss(result=None)
A wrapper around dismiss
that can be called as an action.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
|
ScreenResultType | None
|
The optional result to be passed to the result callback. |
None
|
can_view_entire
¶
can_view_entire(widget)
Check if a given widget is fully within the current screen.
Note: This doesn't necessarily equate to a widget being visible. There are other reasons why a widget may not be visible.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
|
Widget
|
A widget. |
required |
Returns:
Type | Description |
---|---|
bool
|
|
dismiss
¶
dismiss(result=None)
Dismiss the screen, optionally with a result.
Any callback provided in push_screen will be invoked with the supplied result.
Only the active screen may be dismissed. This method will produce a warning in the logs if called on an inactive screen (but otherwise have no effect).
Warning
Textual will raise a ScreenError
if you await the return value from a
message handler on the Screen being dismissed. If you want to dismiss the current screen, you can
call self.dismiss()
without awaiting.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
|
ScreenResultType | None
|
The optional result to be passed to the result callback. |
None
|
find_widget
¶
find_widget(widget)
Get the screen region of a Widget.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
|
Widget
|
A Widget within the composition. |
required |
Returns:
Type | Description |
---|---|
MapGeometry
|
Region relative to screen. |
Raises:
Type | Description |
---|---|
NoWidget
|
If the widget could not be found in this screen. |
focus_next
¶
focus_next(selector='*')
Focus the next widget, optionally filtered by a CSS selector.
If no widget is currently focused, this will focus the first focusable widget.
If no focusable widget matches the given CSS selector, focus is set to None
.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
|
str | type[QueryType]
|
CSS selector to filter what nodes can be focused. |
'*'
|
Returns:
Type | Description |
---|---|
Widget | None
|
Newly focused widget, or None for no focus. If the return
is not |
focus_previous
¶
focus_previous(selector='*')
Focus the previous widget, optionally filtered by a CSS selector.
If no widget is currently focused, this will focus the first focusable widget.
If no focusable widget matches the given CSS selector, focus is set to None
.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
|
str | type[QueryType]
|
CSS selector to filter what nodes can be focused. |
'*'
|
Returns:
Type | Description |
---|---|
Widget | None
|
Newly focused widget, or None for no focus. If the return
is not |
get_focusable_widget_at
¶
Get the focusable widget under a given coordinate.
If the widget directly under the given coordinate is not focusable, then this method will check
if any of the ancestors are focusable. If no ancestors are focusable, then None
will be returned.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
|
int
|
X coordinate. |
required |
|
int
|
Y coordinate. |
required |
Returns:
Type | Description |
---|---|
Widget | None
|
A |
get_style_at
¶
get_widget_at
¶
Get the widget at a given coordinate.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
|
int
|
X Coordinate. |
required |
|
int
|
Y Coordinate. |
required |
Returns:
Type | Description |
---|---|
tuple[Widget, Region]
|
Widget and screen region. |
Raises:
Type | Description |
---|---|
NoWidget
|
If there is no widget under the screen coordinate. |
get_widgets_at
¶
maximize
¶
Maximize a widget, so it fills the screen.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
|
Widget
|
Widget to maximize. |
required |
|
bool
|
If one of the widgets ancestors is a maximizeable widget, maximize that instead. |
True
|
Returns:
Type | Description |
---|---|
bool
|
|
pop_until_active
¶
Pop any screens on top of this one, until this screen is active.
Raises:
Type | Description |
---|---|
ScreenError
|
If this screen is not in the current mode. |
set_focus
¶
set_focus(widget, scroll_visible=True)
SystemModalScreen
¶
Bases: ModalScreen[ScreenResultType]
A variant of ModalScreen
for internal use.
This version of ModalScreen
allows us to build system-level screens;
the type being used to indicate that the screen should be isolated from
the main application.
Note
This screen is set to not inherit CSS.