123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583 |
- :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/<name>/doc_classes.
- .. _class_Button:
- Button
- ======
- **Inherits:** :ref:`BaseButton<class_BaseButton>` **<** :ref:`Control<class_Control>` **<** :ref:`CanvasItem<class_CanvasItem>` **<** :ref:`Node<class_Node>` **<** :ref:`Object<class_Object>`
- **Inherited By:** :ref:`CheckBox<class_CheckBox>`, :ref:`CheckButton<class_CheckButton>`, :ref:`ColorPickerButton<class_ColorPickerButton>`, :ref:`MenuButton<class_MenuButton>`, :ref:`OptionButton<class_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<class_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<class_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<class_TouchScreenButton>` for buttons that trigger gameplay movement or actions, as :ref:`TouchScreenButton<class_TouchScreenButton>` supports multitouch.
- Tutorials
- ---------
- - `2D Dodge The Creeps Demo <https://godotengine.org/asset-library/asset/515>`__
- - `OS Test Demo <https://godotengine.org/asset-library/asset/677>`__
- Properties
- ----------
- +--------------------------------------------------+-------------------------------------------------------------+-----------+
- | :ref:`TextAlign<enum_Button_TextAlign>` | :ref:`align<class_Button_property_align>` | ``1`` |
- +--------------------------------------------------+-------------------------------------------------------------+-----------+
- | :ref:`bool<class_bool>` | :ref:`clip_text<class_Button_property_clip_text>` | ``false`` |
- +--------------------------------------------------+-------------------------------------------------------------+-----------+
- | :ref:`bool<class_bool>` | :ref:`expand_icon<class_Button_property_expand_icon>` | ``false`` |
- +--------------------------------------------------+-------------------------------------------------------------+-----------+
- | :ref:`bool<class_bool>` | :ref:`flat<class_Button_property_flat>` | ``false`` |
- +--------------------------------------------------+-------------------------------------------------------------+-----------+
- | :ref:`Texture2D<class_Texture2D>` | :ref:`icon<class_Button_property_icon>` | |
- +--------------------------------------------------+-------------------------------------------------------------+-----------+
- | :ref:`TextAlign<enum_Button_TextAlign>` | :ref:`icon_align<class_Button_property_icon_align>` | ``0`` |
- +--------------------------------------------------+-------------------------------------------------------------+-----------+
- | :ref:`String<class_String>` | :ref:`language<class_Button_property_language>` | ``""`` |
- +--------------------------------------------------+-------------------------------------------------------------+-----------+
- | :ref:`String<class_String>` | :ref:`text<class_Button_property_text>` | ``""`` |
- +--------------------------------------------------+-------------------------------------------------------------+-----------+
- | :ref:`TextDirection<enum_Control_TextDirection>` | :ref:`text_direction<class_Button_property_text_direction>` | ``0`` |
- +--------------------------------------------------+-------------------------------------------------------------+-----------+
- Methods
- -------
- +-----------------------+------------------------------------------------------------------------------------------------------------------------------------------------+
- | void | :ref:`clear_opentype_features<class_Button_method_clear_opentype_features>` **(** **)** |
- +-----------------------+------------------------------------------------------------------------------------------------------------------------------------------------+
- | :ref:`int<class_int>` | :ref:`get_opentype_feature<class_Button_method_get_opentype_feature>` **(** :ref:`String<class_String>` tag **)** |const| |
- +-----------------------+------------------------------------------------------------------------------------------------------------------------------------------------+
- | void | :ref:`set_opentype_feature<class_Button_method_set_opentype_feature>` **(** :ref:`String<class_String>` tag, :ref:`int<class_int>` value **)** |
- +-----------------------+------------------------------------------------------------------------------------------------------------------------------------------------+
- Theme Properties
- ----------------
- +---------------------------------+------------------------------------------------------------------------------------+--------------------------------+
- | :ref:`StyleBox<class_StyleBox>` | :ref:`disabled<class_Button_theme_style_disabled>` | |
- +---------------------------------+------------------------------------------------------------------------------------+--------------------------------+
- | :ref:`StyleBox<class_StyleBox>` | :ref:`focus<class_Button_theme_style_focus>` | |
- +---------------------------------+------------------------------------------------------------------------------------+--------------------------------+
- | :ref:`Font<class_Font>` | :ref:`font<class_Button_theme_font_font>` | |
- +---------------------------------+------------------------------------------------------------------------------------+--------------------------------+
- | :ref:`Color<class_Color>` | :ref:`font_color<class_Button_theme_color_font_color>` | ``Color(0.88, 0.88, 0.88, 1)`` |
- +---------------------------------+------------------------------------------------------------------------------------+--------------------------------+
- | :ref:`Color<class_Color>` | :ref:`font_disabled_color<class_Button_theme_color_font_disabled_color>` | ``Color(0.9, 0.9, 0.9, 0.2)`` |
- +---------------------------------+------------------------------------------------------------------------------------+--------------------------------+
- | :ref:`Color<class_Color>` | :ref:`font_focus_color<class_Button_theme_color_font_focus_color>` | ``Color(0.94, 0.94, 0.94, 1)`` |
- +---------------------------------+------------------------------------------------------------------------------------+--------------------------------+
- | :ref:`Color<class_Color>` | :ref:`font_hover_color<class_Button_theme_color_font_hover_color>` | ``Color(0.94, 0.94, 0.94, 1)`` |
- +---------------------------------+------------------------------------------------------------------------------------+--------------------------------+
- | :ref:`Color<class_Color>` | :ref:`font_hover_pressed_color<class_Button_theme_color_font_hover_pressed_color>` | ``Color(1, 1, 1, 1)`` |
- +---------------------------------+------------------------------------------------------------------------------------+--------------------------------+
- | :ref:`Color<class_Color>` | :ref:`font_outline_color<class_Button_theme_color_font_outline_color>` | ``Color(1, 1, 1, 1)`` |
- +---------------------------------+------------------------------------------------------------------------------------+--------------------------------+
- | :ref:`Color<class_Color>` | :ref:`font_pressed_color<class_Button_theme_color_font_pressed_color>` | ``Color(1, 1, 1, 1)`` |
- +---------------------------------+------------------------------------------------------------------------------------+--------------------------------+
- | :ref:`int<class_int>` | :ref:`font_size<class_Button_theme_font_size_font_size>` | |
- +---------------------------------+------------------------------------------------------------------------------------+--------------------------------+
- | :ref:`StyleBox<class_StyleBox>` | :ref:`hover<class_Button_theme_style_hover>` | |
- +---------------------------------+------------------------------------------------------------------------------------+--------------------------------+
- | :ref:`int<class_int>` | :ref:`hseparation<class_Button_theme_constant_hseparation>` | ``2`` |
- +---------------------------------+------------------------------------------------------------------------------------+--------------------------------+
- | :ref:`Color<class_Color>` | :ref:`icon_disabled_color<class_Button_theme_color_icon_disabled_color>` | ``Color(1, 1, 1, 1)`` |
- +---------------------------------+------------------------------------------------------------------------------------+--------------------------------+
- | :ref:`Color<class_Color>` | :ref:`icon_focus_color<class_Button_theme_color_icon_focus_color>` | ``Color(1, 1, 1, 1)`` |
- +---------------------------------+------------------------------------------------------------------------------------+--------------------------------+
- | :ref:`Color<class_Color>` | :ref:`icon_hover_color<class_Button_theme_color_icon_hover_color>` | ``Color(1, 1, 1, 1)`` |
- +---------------------------------+------------------------------------------------------------------------------------+--------------------------------+
- | :ref:`Color<class_Color>` | :ref:`icon_hover_pressed_color<class_Button_theme_color_icon_hover_pressed_color>` | ``Color(1, 1, 1, 1)`` |
- +---------------------------------+------------------------------------------------------------------------------------+--------------------------------+
- | :ref:`Color<class_Color>` | :ref:`icon_normal_color<class_Button_theme_color_icon_normal_color>` | ``Color(1, 1, 1, 1)`` |
- +---------------------------------+------------------------------------------------------------------------------------+--------------------------------+
- | :ref:`Color<class_Color>` | :ref:`icon_pressed_color<class_Button_theme_color_icon_pressed_color>` | ``Color(1, 1, 1, 1)`` |
- +---------------------------------+------------------------------------------------------------------------------------+--------------------------------+
- | :ref:`StyleBox<class_StyleBox>` | :ref:`normal<class_Button_theme_style_normal>` | |
- +---------------------------------+------------------------------------------------------------------------------------+--------------------------------+
- | :ref:`int<class_int>` | :ref:`outline_size<class_Button_theme_constant_outline_size>` | ``0`` |
- +---------------------------------+------------------------------------------------------------------------------------+--------------------------------+
- | :ref:`StyleBox<class_StyleBox>` | :ref:`pressed<class_Button_theme_style_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<enum_Button_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<enum_Button_TextAlign>` constants.
- ----
- .. _class_Button_property_clip_text:
- - :ref:`bool<class_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<class_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<class_bool>` **flat**
- +-----------+-----------------+
- | *Default* | ``false`` |
- +-----------+-----------------+
- | *Setter* | set_flat(value) |
- +-----------+-----------------+
- | *Getter* | is_flat() |
- +-----------+-----------------+
- Flat buttons don't display decoration.
- ----
- .. _class_Button_property_icon:
- - :ref:`Texture2D<class_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<class_Button_theme_constant_hseparation>` theme property and ``content_margin_*`` properties of the used :ref:`StyleBox<class_StyleBox>`\ es.
- ----
- .. _class_Button_property_icon_align:
- - :ref:`TextAlign<enum_Button_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<enum_Button_TextAlign>` constants as the text alignment. If centered, text will draw on top of the icon.
- ----
- .. _class_Button_property_language:
- - :ref:`String<class_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<class_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<enum_Control_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<class_int>` **get_opentype_feature** **(** :ref:`String<class_String>` tag **)** |const|
- Returns OpenType feature ``tag``.
- ----
- .. _class_Button_method_set_opentype_feature:
- - void **set_opentype_feature** **(** :ref:`String<class_String>` tag, :ref:`int<class_int>` value **)**
- Sets OpenType feature ``tag``. More info: `OpenType feature tags <https://docs.microsoft.com/en-us/typography/opentype/spec/featuretags>`__.
- Theme Property Descriptions
- ---------------------------
- .. _class_Button_theme_style_disabled:
- - :ref:`StyleBox<class_StyleBox>` **disabled**
- :ref:`StyleBox<class_StyleBox>` used when the ``Button`` is disabled.
- ----
- .. _class_Button_theme_style_focus:
- - :ref:`StyleBox<class_StyleBox>` **focus**
- :ref:`StyleBox<class_StyleBox>` used when the ``Button`` is focused. It is displayed over the current :ref:`StyleBox<class_StyleBox>`, so using :ref:`StyleBoxEmpty<class_StyleBoxEmpty>` will just disable the focus visual effect.
- ----
- .. _class_Button_theme_font_font:
- - :ref:`Font<class_Font>` **font**
- :ref:`Font<class_Font>` of the ``Button``'s text.
- ----
- .. _class_Button_theme_color_font_color:
- - :ref:`Color<class_Color>` **font_color**
- +-----------+--------------------------------+
- | *Default* | ``Color(0.88, 0.88, 0.88, 1)`` |
- +-----------+--------------------------------+
- Default text :ref:`Color<class_Color>` of the ``Button``.
- ----
- .. _class_Button_theme_color_font_disabled_color:
- - :ref:`Color<class_Color>` **font_disabled_color**
- +-----------+-------------------------------+
- | *Default* | ``Color(0.9, 0.9, 0.9, 0.2)`` |
- +-----------+-------------------------------+
- Text :ref:`Color<class_Color>` used when the ``Button`` is disabled.
- ----
- .. _class_Button_theme_color_font_focus_color:
- - :ref:`Color<class_Color>` **font_focus_color**
- +-----------+--------------------------------+
- | *Default* | ``Color(0.94, 0.94, 0.94, 1)`` |
- +-----------+--------------------------------+
- Text :ref:`Color<class_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<class_Color>` **font_hover_color**
- +-----------+--------------------------------+
- | *Default* | ``Color(0.94, 0.94, 0.94, 1)`` |
- +-----------+--------------------------------+
- Text :ref:`Color<class_Color>` used when the ``Button`` is being hovered.
- ----
- .. _class_Button_theme_color_font_hover_pressed_color:
- - :ref:`Color<class_Color>` **font_hover_pressed_color**
- +-----------+-----------------------+
- | *Default* | ``Color(1, 1, 1, 1)`` |
- +-----------+-----------------------+
- Text :ref:`Color<class_Color>` used when the ``Button`` is being hovered and pressed.
- ----
- .. _class_Button_theme_color_font_outline_color:
- - :ref:`Color<class_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<class_Color>` **font_pressed_color**
- +-----------+-----------------------+
- | *Default* | ``Color(1, 1, 1, 1)`` |
- +-----------+-----------------------+
- Text :ref:`Color<class_Color>` used when the ``Button`` is being pressed.
- ----
- .. _class_Button_theme_font_size_font_size:
- - :ref:`int<class_int>` **font_size**
- Font size of the ``Button``'s text.
- ----
- .. _class_Button_theme_style_hover:
- - :ref:`StyleBox<class_StyleBox>` **hover**
- :ref:`StyleBox<class_StyleBox>` used when the ``Button`` is being hovered.
- ----
- .. _class_Button_theme_constant_hseparation:
- - :ref:`int<class_int>` **hseparation**
- +-----------+-------+
- | *Default* | ``2`` |
- +-----------+-------+
- The horizontal space between ``Button``'s icon and text.
- ----
- .. _class_Button_theme_color_icon_disabled_color:
- - :ref:`Color<class_Color>` **icon_disabled_color**
- +-----------+-----------------------+
- | *Default* | ``Color(1, 1, 1, 1)`` |
- +-----------+-----------------------+
- Icon modulate :ref:`Color<class_Color>` used when the ``Button`` is disabled.
- ----
- .. _class_Button_theme_color_icon_focus_color:
- - :ref:`Color<class_Color>` **icon_focus_color**
- +-----------+-----------------------+
- | *Default* | ``Color(1, 1, 1, 1)`` |
- +-----------+-----------------------+
- Icon modulate :ref:`Color<class_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<class_Color>` **icon_hover_color**
- +-----------+-----------------------+
- | *Default* | ``Color(1, 1, 1, 1)`` |
- +-----------+-----------------------+
- Icon modulate :ref:`Color<class_Color>` used when the ``Button`` is being hovered.
- ----
- .. _class_Button_theme_color_icon_hover_pressed_color:
- - :ref:`Color<class_Color>` **icon_hover_pressed_color**
- +-----------+-----------------------+
- | *Default* | ``Color(1, 1, 1, 1)`` |
- +-----------+-----------------------+
- Icon modulate :ref:`Color<class_Color>` used when the ``Button`` is being hovered and pressed.
- ----
- .. _class_Button_theme_color_icon_normal_color:
- - :ref:`Color<class_Color>` **icon_normal_color**
- +-----------+-----------------------+
- | *Default* | ``Color(1, 1, 1, 1)`` |
- +-----------+-----------------------+
- Default icon modulate :ref:`Color<class_Color>` of the ``Button``.
- ----
- .. _class_Button_theme_color_icon_pressed_color:
- - :ref:`Color<class_Color>` **icon_pressed_color**
- +-----------+-----------------------+
- | *Default* | ``Color(1, 1, 1, 1)`` |
- +-----------+-----------------------+
- Icon modulate :ref:`Color<class_Color>` used when the ``Button`` is being pressed.
- ----
- .. _class_Button_theme_style_normal:
- - :ref:`StyleBox<class_StyleBox>` **normal**
- Default :ref:`StyleBox<class_StyleBox>` for the ``Button``.
- ----
- .. _class_Button_theme_constant_outline_size:
- - :ref:`int<class_int>` **outline_size**
- +-----------+-------+
- | *Default* | ``0`` |
- +-----------+-------+
- The size of the text outline.
- ----
- .. _class_Button_theme_style_pressed:
- - :ref:`StyleBox<class_StyleBox>` **pressed**
- :ref:`StyleBox<class_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.)`
|