Button¶
A simple button widget which can be pressed using a mouse click or by pressing Enter when it has focus.
- Focusable
- Container
Example¶
The example below shows each button variant, and its disabled equivalent. Clicking any of the non-disabled buttons in the example app below will result in the app exiting and the details of the selected button being printed to the console.
from textual.app import App, ComposeResult
from textual.containers import Horizontal, VerticalScroll
from textual.widgets import Button, Static
class ButtonsApp(App[str]):
CSS_PATH = "button.tcss"
def compose(self) -> ComposeResult:
yield Horizontal(
VerticalScroll(
Static("Standard Buttons", classes="header"),
Button("Default"),
Button("Primary!", variant="primary"),
Button.success("Success!"),
Button.warning("Warning!"),
Button.error("Error!"),
),
VerticalScroll(
Static("Disabled Buttons", classes="header"),
Button("Default", disabled=True),
Button("Primary!", variant="primary", disabled=True),
Button.success("Success!", disabled=True),
Button.warning("Warning!", disabled=True),
Button.error("Error!", disabled=True),
),
)
def on_button_pressed(self, event: Button.Pressed) -> None:
self.exit(str(event.button))
if __name__ == "__main__":
app = ButtonsApp()
print(app.run())
Reactive Attributes¶
Name | Type | Default | Description |
---|---|---|---|
label |
str |
"" |
The text that appears inside the button. |
variant |
ButtonVariant |
"default" |
Semantic styling variant. One of default , primary , success , warning , error . |
disabled |
bool |
False |
Whether the button is disabled or not. Disabled buttons cannot be focused or clicked, and are styled in a way that suggests this. |
Messages¶
Bindings¶
This widget has no bindings.
Component Classes¶
This widget has no component classes.
Additional Notes¶
- The spacing between the text and the edges of a button are not due to padding. The default styling for a
Button
has theheight
set to 3 lines and amin-width
of 16 columns. To create a button with zero visible padding, you will need to change these values and also remove the border withborder: none;
.
textual.widgets.Button
class
¶
def __init__(
self,
label=None,
variant="default",
*,
name=None,
id=None,
classes=None,
disabled=False
):
Bases: Static
A simple clickable button.
Parameters
Name | Type | Description | Default |
---|---|---|---|
label |
TextType | None
|
The text that appears within the button. |
None
|
variant |
ButtonVariant
|
The variant of the button. |
'default'
|
name |
str | None
|
The name of the button. |
None
|
id |
str | None
|
The ID of the button in the DOM. |
None
|
classes |
str | None
|
The CSS classes of the button. |
None
|
disabled |
bool
|
Whether the button is disabled or not. |
False
|
ACTIVE_EFFECT_DURATION
class-attribute
instance-attribute
¶
When buttons are clicked they get the -active
class for this duration (in seconds)
label
class-attribute
instance-attribute
¶
The text label that appears within the button.
variant
class-attribute
instance-attribute
¶
The variant name for the button.
Pressed
class
¶
Bases: Message
Event sent when a Button
is pressed.
Can be handled using on_button_pressed
in a subclass of
Button
or in a parent widget in the DOM.
control
property
¶
An alias for Pressed.button.
This will be the same value as Pressed.button.
error
classmethod
¶
Utility constructor for creating an error Button variant.
Parameters
Name | Type | Description | Default |
---|---|---|---|
label |
TextType | None
|
The text that appears within the button. |
None
|
disabled |
bool
|
Whether the button is disabled or not. |
False
|
name |
str | None
|
The name of the button. |
None
|
id |
str | None
|
The ID of the button in the DOM. |
None
|
classes |
str | None
|
The CSS classes of the button. |
None
|
disabled |
bool
|
Whether the button is disabled or not. |
False
|
Returns
Type | Description |
---|---|
Button
|
press
method
¶
Respond to a button press.
Returns
Type | Description |
---|---|
Self
|
The button instance. |
success
classmethod
¶
Utility constructor for creating a success Button variant.
Parameters
Name | Type | Description | Default |
---|---|---|---|
label |
TextType | None
|
The text that appears within the button. |
None
|
disabled |
bool
|
Whether the button is disabled or not. |
False
|
name |
str | None
|
The name of the button. |
None
|
id |
str | None
|
The ID of the button in the DOM. |
None
|
classes |
str | None
|
The CSS classes of the button. |
None
|
disabled |
bool
|
Whether the button is disabled or not. |
False
|
Returns
Type | Description |
---|---|
Button
|
warning
classmethod
¶
Utility constructor for creating a warning Button variant.
Parameters
Name | Type | Description | Default |
---|---|---|---|
label |
TextType | None
|
The text that appears within the button. |
None
|
disabled |
bool
|
Whether the button is disabled or not. |
False
|
name |
str | None
|
The name of the button. |
None
|
id |
str | None
|
The ID of the button in the DOM. |
None
|
classes |
str | None
|
The CSS classes of the button. |
None
|
disabled |
bool
|
Whether the button is disabled or not. |
False
|
Returns
Type | Description |
---|---|
Button
|