:github_url: hide .. Generated automatically by doc/tools/make_rst.py in Godot's source tree. .. DO NOT EDIT THIS FILE, but the Button.xml source instead. .. The source is found in doc/classes or modules//doc_classes. .. _class_Button: Button ====== **Inherits:** :ref:`BaseButton` **<** :ref:`Control` **<** :ref:`CanvasItem` **<** :ref:`Node` **<** :ref:`Object` **Inherited By:** :ref:`CheckBox`, :ref:`CheckButton`, :ref:`ColorPickerButton`, :ref:`MenuButton`, :ref:`OptionButton` Standard themed Button. Description ----------- Button is the standard themed button. It can contain text and an icon, and will display them according to the current :ref:`Theme`. **Example of creating a button and assigning an action when pressed by code:** .. tabs:: .. code-tab:: gdscript func _ready(): var button = Button.new() button.text = "Click me" button.connect("pressed", self, "_button_pressed") add_child(button) func _button_pressed(): print("Hello world!") .. code-tab:: csharp public override void _Ready() { var button = new Button(); button.Text = "Click me"; button.Connect("pressed", this, nameof(ButtonPressed)); AddChild(button); } private void ButtonPressed() { GD.Print("Hello world!"); } Buttons (like all Control nodes) can also be created in the editor, but some situations may require creating them from code. See also :ref:`BaseButton` which contains common properties and methods associated with this node. **Note:** Buttons do not interpret touch input and therefore don't support multitouch, since mouse emulation can only press one button at a given time. Use :ref:`TouchScreenButton` for buttons that trigger gameplay movement or actions, as :ref:`TouchScreenButton` supports multitouch. Tutorials --------- - `2D Dodge The Creeps Demo `__ - `OS Test Demo `__ Properties ---------- +--------------------------------------------------+-------------------------------------------------------------+-----------+ | :ref:`TextAlign` | :ref:`align` | ``1`` | +--------------------------------------------------+-------------------------------------------------------------+-----------+ | :ref:`bool` | :ref:`clip_text` | ``false`` | +--------------------------------------------------+-------------------------------------------------------------+-----------+ | :ref:`bool` | :ref:`expand_icon` | ``false`` | +--------------------------------------------------+-------------------------------------------------------------+-----------+ | :ref:`bool` | :ref:`flat` | ``false`` | +--------------------------------------------------+-------------------------------------------------------------+-----------+ | :ref:`Texture2D` | :ref:`icon` | | +--------------------------------------------------+-------------------------------------------------------------+-----------+ | :ref:`TextAlign` | :ref:`icon_align` | ``0`` | +--------------------------------------------------+-------------------------------------------------------------+-----------+ | :ref:`String` | :ref:`language` | ``""`` | +--------------------------------------------------+-------------------------------------------------------------+-----------+ | :ref:`String` | :ref:`text` | ``""`` | +--------------------------------------------------+-------------------------------------------------------------+-----------+ | :ref:`TextDirection` | :ref:`text_direction` | ``0`` | +--------------------------------------------------+-------------------------------------------------------------+-----------+ Methods ------- +-----------------------+------------------------------------------------------------------------------------------------------------------------------------------------+ | void | :ref:`clear_opentype_features` **(** **)** | +-----------------------+------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`int` | :ref:`get_opentype_feature` **(** :ref:`String` tag **)** |const| | +-----------------------+------------------------------------------------------------------------------------------------------------------------------------------------+ | void | :ref:`set_opentype_feature` **(** :ref:`String` tag, :ref:`int` value **)** | +-----------------------+------------------------------------------------------------------------------------------------------------------------------------------------+ Theme Properties ---------------- +---------------------------------+------------------------------------------------------------------------------------+--------------------------------+ | :ref:`StyleBox` | :ref:`disabled` | | +---------------------------------+------------------------------------------------------------------------------------+--------------------------------+ | :ref:`StyleBox` | :ref:`focus` | | +---------------------------------+------------------------------------------------------------------------------------+--------------------------------+ | :ref:`Font` | :ref:`font` | | +---------------------------------+------------------------------------------------------------------------------------+--------------------------------+ | :ref:`Color` | :ref:`font_color` | ``Color(0.88, 0.88, 0.88, 1)`` | +---------------------------------+------------------------------------------------------------------------------------+--------------------------------+ | :ref:`Color` | :ref:`font_disabled_color` | ``Color(0.9, 0.9, 0.9, 0.2)`` | +---------------------------------+------------------------------------------------------------------------------------+--------------------------------+ | :ref:`Color` | :ref:`font_focus_color` | ``Color(0.94, 0.94, 0.94, 1)`` | +---------------------------------+------------------------------------------------------------------------------------+--------------------------------+ | :ref:`Color` | :ref:`font_hover_color` | ``Color(0.94, 0.94, 0.94, 1)`` | +---------------------------------+------------------------------------------------------------------------------------+--------------------------------+ | :ref:`Color` | :ref:`font_hover_pressed_color` | ``Color(1, 1, 1, 1)`` | +---------------------------------+------------------------------------------------------------------------------------+--------------------------------+ | :ref:`Color` | :ref:`font_outline_color` | ``Color(1, 1, 1, 1)`` | +---------------------------------+------------------------------------------------------------------------------------+--------------------------------+ | :ref:`Color` | :ref:`font_pressed_color` | ``Color(1, 1, 1, 1)`` | +---------------------------------+------------------------------------------------------------------------------------+--------------------------------+ | :ref:`int` | :ref:`font_size` | | +---------------------------------+------------------------------------------------------------------------------------+--------------------------------+ | :ref:`StyleBox` | :ref:`hover` | | +---------------------------------+------------------------------------------------------------------------------------+--------------------------------+ | :ref:`int` | :ref:`hseparation` | ``2`` | +---------------------------------+------------------------------------------------------------------------------------+--------------------------------+ | :ref:`Color` | :ref:`icon_disabled_color` | ``Color(1, 1, 1, 1)`` | +---------------------------------+------------------------------------------------------------------------------------+--------------------------------+ | :ref:`Color` | :ref:`icon_focus_color` | ``Color(1, 1, 1, 1)`` | +---------------------------------+------------------------------------------------------------------------------------+--------------------------------+ | :ref:`Color` | :ref:`icon_hover_color` | ``Color(1, 1, 1, 1)`` | +---------------------------------+------------------------------------------------------------------------------------+--------------------------------+ | :ref:`Color` | :ref:`icon_hover_pressed_color` | ``Color(1, 1, 1, 1)`` | +---------------------------------+------------------------------------------------------------------------------------+--------------------------------+ | :ref:`Color` | :ref:`icon_normal_color` | ``Color(1, 1, 1, 1)`` | +---------------------------------+------------------------------------------------------------------------------------+--------------------------------+ | :ref:`Color` | :ref:`icon_pressed_color` | ``Color(1, 1, 1, 1)`` | +---------------------------------+------------------------------------------------------------------------------------+--------------------------------+ | :ref:`StyleBox` | :ref:`normal` | | +---------------------------------+------------------------------------------------------------------------------------+--------------------------------+ | :ref:`int` | :ref:`outline_size` | ``0`` | +---------------------------------+------------------------------------------------------------------------------------+--------------------------------+ | :ref:`StyleBox` | :ref:`pressed` | | +---------------------------------+------------------------------------------------------------------------------------+--------------------------------+ Enumerations ------------ .. _enum_Button_TextAlign: .. _class_Button_constant_ALIGN_LEFT: .. _class_Button_constant_ALIGN_CENTER: .. _class_Button_constant_ALIGN_RIGHT: enum **TextAlign**: - **ALIGN_LEFT** = **0** --- Align the text to the left. - **ALIGN_CENTER** = **1** --- Align the text to the center. - **ALIGN_RIGHT** = **2** --- Align the text to the right. Property Descriptions --------------------- .. _class_Button_property_align: - :ref:`TextAlign` **align** +-----------+-----------------------+ | *Default* | ``1`` | +-----------+-----------------------+ | *Setter* | set_text_align(value) | +-----------+-----------------------+ | *Getter* | get_text_align() | +-----------+-----------------------+ Text alignment policy for the button's text, use one of the :ref:`TextAlign` constants. ---- .. _class_Button_property_clip_text: - :ref:`bool` **clip_text** +-----------+----------------------+ | *Default* | ``false`` | +-----------+----------------------+ | *Setter* | set_clip_text(value) | +-----------+----------------------+ | *Getter* | get_clip_text() | +-----------+----------------------+ When this property is enabled, text that is too large to fit the button is clipped, when disabled the Button will always be wide enough to hold the text. ---- .. _class_Button_property_expand_icon: - :ref:`bool` **expand_icon** +-----------+------------------------+ | *Default* | ``false`` | +-----------+------------------------+ | *Setter* | set_expand_icon(value) | +-----------+------------------------+ | *Getter* | is_expand_icon() | +-----------+------------------------+ When enabled, the button's icon will expand/shrink to fit the button's size while keeping its aspect. ---- .. _class_Button_property_flat: - :ref:`bool` **flat** +-----------+-----------------+ | *Default* | ``false`` | +-----------+-----------------+ | *Setter* | set_flat(value) | +-----------+-----------------+ | *Getter* | is_flat() | +-----------+-----------------+ Flat buttons don't display decoration. ---- .. _class_Button_property_icon: - :ref:`Texture2D` **icon** +----------+------------------------+ | *Setter* | set_button_icon(value) | +----------+------------------------+ | *Getter* | get_button_icon() | +----------+------------------------+ Button's icon, if text is present the icon will be placed before the text. To edit margin and spacing of the icon, use :ref:`hseparation` theme property and ``content_margin_*`` properties of the used :ref:`StyleBox`\ es. ---- .. _class_Button_property_icon_align: - :ref:`TextAlign` **icon_align** +-----------+-----------------------+ | *Default* | ``0`` | +-----------+-----------------------+ | *Setter* | set_icon_align(value) | +-----------+-----------------------+ | *Getter* | get_icon_align() | +-----------+-----------------------+ Specifies if the icon should be aligned to the left, right, or center of a button. Uses the same :ref:`TextAlign` constants as the text alignment. If centered, text will draw on top of the icon. ---- .. _class_Button_property_language: - :ref:`String` **language** +-----------+---------------------+ | *Default* | ``""`` | +-----------+---------------------+ | *Setter* | set_language(value) | +-----------+---------------------+ | *Getter* | get_language() | +-----------+---------------------+ Language code used for line-breaking and text shaping algorithms, if left empty current locale is used instead. ---- .. _class_Button_property_text: - :ref:`String` **text** +-----------+-----------------+ | *Default* | ``""`` | +-----------+-----------------+ | *Setter* | set_text(value) | +-----------+-----------------+ | *Getter* | get_text() | +-----------+-----------------+ The button's text that will be displayed inside the button's area. ---- .. _class_Button_property_text_direction: - :ref:`TextDirection` **text_direction** +-----------+---------------------------+ | *Default* | ``0`` | +-----------+---------------------------+ | *Setter* | set_text_direction(value) | +-----------+---------------------------+ | *Getter* | get_text_direction() | +-----------+---------------------------+ Base text writing direction. Method Descriptions ------------------- .. _class_Button_method_clear_opentype_features: - void **clear_opentype_features** **(** **)** Removes all OpenType features. ---- .. _class_Button_method_get_opentype_feature: - :ref:`int` **get_opentype_feature** **(** :ref:`String` tag **)** |const| Returns OpenType feature ``tag``. ---- .. _class_Button_method_set_opentype_feature: - void **set_opentype_feature** **(** :ref:`String` tag, :ref:`int` value **)** Sets OpenType feature ``tag``. More info: `OpenType feature tags `__. Theme Property Descriptions --------------------------- .. _class_Button_theme_style_disabled: - :ref:`StyleBox` **disabled** :ref:`StyleBox` used when the ``Button`` is disabled. ---- .. _class_Button_theme_style_focus: - :ref:`StyleBox` **focus** :ref:`StyleBox` used when the ``Button`` is focused. It is displayed over the current :ref:`StyleBox`, so using :ref:`StyleBoxEmpty` will just disable the focus visual effect. ---- .. _class_Button_theme_font_font: - :ref:`Font` **font** :ref:`Font` of the ``Button``'s text. ---- .. _class_Button_theme_color_font_color: - :ref:`Color` **font_color** +-----------+--------------------------------+ | *Default* | ``Color(0.88, 0.88, 0.88, 1)`` | +-----------+--------------------------------+ Default text :ref:`Color` of the ``Button``. ---- .. _class_Button_theme_color_font_disabled_color: - :ref:`Color` **font_disabled_color** +-----------+-------------------------------+ | *Default* | ``Color(0.9, 0.9, 0.9, 0.2)`` | +-----------+-------------------------------+ Text :ref:`Color` used when the ``Button`` is disabled. ---- .. _class_Button_theme_color_font_focus_color: - :ref:`Color` **font_focus_color** +-----------+--------------------------------+ | *Default* | ``Color(0.94, 0.94, 0.94, 1)`` | +-----------+--------------------------------+ Text :ref:`Color` used when the ``Button`` is focused. Only replaces the normal text color of the button. Disabled, hovered, and pressed states take precedence over this color. ---- .. _class_Button_theme_color_font_hover_color: - :ref:`Color` **font_hover_color** +-----------+--------------------------------+ | *Default* | ``Color(0.94, 0.94, 0.94, 1)`` | +-----------+--------------------------------+ Text :ref:`Color` used when the ``Button`` is being hovered. ---- .. _class_Button_theme_color_font_hover_pressed_color: - :ref:`Color` **font_hover_pressed_color** +-----------+-----------------------+ | *Default* | ``Color(1, 1, 1, 1)`` | +-----------+-----------------------+ Text :ref:`Color` used when the ``Button`` is being hovered and pressed. ---- .. _class_Button_theme_color_font_outline_color: - :ref:`Color` **font_outline_color** +-----------+-----------------------+ | *Default* | ``Color(1, 1, 1, 1)`` | +-----------+-----------------------+ The tint of text outline of the ``Button``. ---- .. _class_Button_theme_color_font_pressed_color: - :ref:`Color` **font_pressed_color** +-----------+-----------------------+ | *Default* | ``Color(1, 1, 1, 1)`` | +-----------+-----------------------+ Text :ref:`Color` used when the ``Button`` is being pressed. ---- .. _class_Button_theme_font_size_font_size: - :ref:`int` **font_size** Font size of the ``Button``'s text. ---- .. _class_Button_theme_style_hover: - :ref:`StyleBox` **hover** :ref:`StyleBox` used when the ``Button`` is being hovered. ---- .. _class_Button_theme_constant_hseparation: - :ref:`int` **hseparation** +-----------+-------+ | *Default* | ``2`` | +-----------+-------+ The horizontal space between ``Button``'s icon and text. ---- .. _class_Button_theme_color_icon_disabled_color: - :ref:`Color` **icon_disabled_color** +-----------+-----------------------+ | *Default* | ``Color(1, 1, 1, 1)`` | +-----------+-----------------------+ Icon modulate :ref:`Color` used when the ``Button`` is disabled. ---- .. _class_Button_theme_color_icon_focus_color: - :ref:`Color` **icon_focus_color** +-----------+-----------------------+ | *Default* | ``Color(1, 1, 1, 1)`` | +-----------+-----------------------+ Icon modulate :ref:`Color` used when the ``Button`` is focused. Only replaces the normal modulate color of the button. Disabled, hovered, and pressed states take precedence over this color. ---- .. _class_Button_theme_color_icon_hover_color: - :ref:`Color` **icon_hover_color** +-----------+-----------------------+ | *Default* | ``Color(1, 1, 1, 1)`` | +-----------+-----------------------+ Icon modulate :ref:`Color` used when the ``Button`` is being hovered. ---- .. _class_Button_theme_color_icon_hover_pressed_color: - :ref:`Color` **icon_hover_pressed_color** +-----------+-----------------------+ | *Default* | ``Color(1, 1, 1, 1)`` | +-----------+-----------------------+ Icon modulate :ref:`Color` used when the ``Button`` is being hovered and pressed. ---- .. _class_Button_theme_color_icon_normal_color: - :ref:`Color` **icon_normal_color** +-----------+-----------------------+ | *Default* | ``Color(1, 1, 1, 1)`` | +-----------+-----------------------+ Default icon modulate :ref:`Color` of the ``Button``. ---- .. _class_Button_theme_color_icon_pressed_color: - :ref:`Color` **icon_pressed_color** +-----------+-----------------------+ | *Default* | ``Color(1, 1, 1, 1)`` | +-----------+-----------------------+ Icon modulate :ref:`Color` used when the ``Button`` is being pressed. ---- .. _class_Button_theme_style_normal: - :ref:`StyleBox` **normal** Default :ref:`StyleBox` for the ``Button``. ---- .. _class_Button_theme_constant_outline_size: - :ref:`int` **outline_size** +-----------+-------+ | *Default* | ``0`` | +-----------+-------+ The size of the text outline. ---- .. _class_Button_theme_style_pressed: - :ref:`StyleBox` **pressed** :ref:`StyleBox` used when the ``Button`` is being pressed. .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)` .. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)` .. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)` .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)`