# Button A simple button widget which can be pressed using a mouse click or by pressing ++return++ when it has focus. - [x] 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. === "Output" ```{.textual path="docs/examples/widgets/button.py"} ``` === "button.py" ```python --8<-- "docs/examples/widgets/button.py" ``` === "button.css" ```sass --8<-- "docs/examples/widgets/button.css" ``` ## Reactive Attributes | Name | Type | Default | Description | | ---------- | ------ | ----------- | --------------------------------------------------------------------------------------------------------------------------------- | | `label` | `str` | `""` | The text that appears inside the button. | | `variant` | `str` | `"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 ### ::: textual.widgets.Button.Pressed ## Additional Notes * The spacing between the text and the edges of a button are due to border, _not_ padding. To create a button with zero visible padding, use the `border: none;` declaration. ## See Also * [Button](../api/button.md) code reference