Files
godot-docs/classes/class_button.rst
2021-08-03 10:43:59 +02:00

210 lines
8.6 KiB
ReStructuredText

:github_url: hide
.. Generated automatically by doc/tools/makerst.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>`, :ref:`ToolButton<class_ToolButton>`
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:**
::
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!")
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:`Texture<class_Texture>` | :ref:`icon<class_Button_property_icon>` | |
+-----------------------------------------+-------------------------------------------------------+-----------+
| :ref:`String<class_String>` | :ref:`text<class_Button_property_text>` | ``""`` |
+-----------------------------------------+-------------------------------------------------------+-----------+
Theme Properties
----------------
+---------------------------------+---------------------+------------------------------+
| :ref:`StyleBox<class_StyleBox>` | disabled | |
+---------------------------------+---------------------+------------------------------+
| :ref:`StyleBox<class_StyleBox>` | focus | |
+---------------------------------+---------------------+------------------------------+
| :ref:`Font<class_Font>` | font | |
+---------------------------------+---------------------+------------------------------+
| :ref:`Color<class_Color>` | font_color | Color( 0.88, 0.88, 0.88, 1 ) |
+---------------------------------+---------------------+------------------------------+
| :ref:`Color<class_Color>` | font_color_disabled | Color( 0.9, 0.9, 0.9, 0.2 ) |
+---------------------------------+---------------------+------------------------------+
| :ref:`Color<class_Color>` | font_color_hover | Color( 0.94, 0.94, 0.94, 1 ) |
+---------------------------------+---------------------+------------------------------+
| :ref:`Color<class_Color>` | font_color_pressed | Color( 1, 1, 1, 1 ) |
+---------------------------------+---------------------+------------------------------+
| :ref:`StyleBox<class_StyleBox>` | hover | |
+---------------------------------+---------------------+------------------------------+
| :ref:`int<class_int>` | hseparation | 2 |
+---------------------------------+---------------------+------------------------------+
| :ref:`StyleBox<class_StyleBox>` | normal | |
+---------------------------------+---------------------+------------------------------+
| :ref:`StyleBox<class_StyleBox>` | 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:`Texture<class_Texture>` **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.
----
.. _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.
.. |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.)`