class_button.rst 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429
  1. :github_url: hide
  2. .. DO NOT EDIT THIS FILE!!!
  3. .. Generated automatically from Godot engine sources.
  4. .. Generator: https://github.com/godotengine/godot/tree/3.5/doc/tools/make_rst.py.
  5. .. XML source: https://github.com/godotengine/godot/tree/3.5/doc/classes/Button.xml.
  6. .. _class_Button:
  7. Button
  8. ======
  9. **Inherits:** :ref:`BaseButton<class_BaseButton>` **<** :ref:`Control<class_Control>` **<** :ref:`CanvasItem<class_CanvasItem>` **<** :ref:`Node<class_Node>` **<** :ref:`Object<class_Object>`
  10. **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>`
  11. Standard themed Button.
  12. .. rst-class:: classref-introduction-group
  13. Description
  14. -----------
  15. 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>`.
  16. \ **Example of creating a button and assigning an action when pressed by code:**\
  17. ::
  18. func _ready():
  19. var button = Button.new()
  20. button.text = "Click me"
  21. button.connect("pressed", self, "_button_pressed")
  22. add_child(button)
  23. func _button_pressed():
  24. print("Hello world!")
  25. Buttons (like all Control nodes) can also be created in the editor, but some situations may require creating them from code.
  26. See also :ref:`BaseButton<class_BaseButton>` which contains common properties and methods associated with this node.
  27. \ **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.
  28. .. rst-class:: classref-introduction-group
  29. Tutorials
  30. ---------
  31. - `2D Dodge The Creeps Demo <https://godotengine.org/asset-library/asset/515>`__
  32. - `OS Test Demo <https://godotengine.org/asset-library/asset/677>`__
  33. .. rst-class:: classref-reftable-group
  34. Properties
  35. ----------
  36. .. table::
  37. :widths: auto
  38. +-----------------------------------------+-------------------------------------------------------+-----------+
  39. | :ref:`TextAlign<enum_Button_TextAlign>` | :ref:`align<class_Button_property_align>` | ``1`` |
  40. +-----------------------------------------+-------------------------------------------------------+-----------+
  41. | :ref:`bool<class_bool>` | :ref:`clip_text<class_Button_property_clip_text>` | ``false`` |
  42. +-----------------------------------------+-------------------------------------------------------+-----------+
  43. | :ref:`bool<class_bool>` | :ref:`expand_icon<class_Button_property_expand_icon>` | ``false`` |
  44. +-----------------------------------------+-------------------------------------------------------+-----------+
  45. | :ref:`bool<class_bool>` | :ref:`flat<class_Button_property_flat>` | ``false`` |
  46. +-----------------------------------------+-------------------------------------------------------+-----------+
  47. | :ref:`Texture<class_Texture>` | :ref:`icon<class_Button_property_icon>` | |
  48. +-----------------------------------------+-------------------------------------------------------+-----------+
  49. | :ref:`TextAlign<enum_Button_TextAlign>` | :ref:`icon_align<class_Button_property_icon_align>` | ``0`` |
  50. +-----------------------------------------+-------------------------------------------------------+-----------+
  51. | :ref:`String<class_String>` | :ref:`text<class_Button_property_text>` | ``""`` |
  52. +-----------------------------------------+-------------------------------------------------------+-----------+
  53. .. rst-class:: classref-reftable-group
  54. Theme Properties
  55. ----------------
  56. .. table::
  57. :widths: auto
  58. +---------------------------------+--------------------------------------------------------------------------+----------------------------------+
  59. | :ref:`Color<class_Color>` | :ref:`font_color<class_Button_theme_color_font_color>` | ``Color( 0.88, 0.88, 0.88, 1 )`` |
  60. +---------------------------------+--------------------------------------------------------------------------+----------------------------------+
  61. | :ref:`Color<class_Color>` | :ref:`font_color_disabled<class_Button_theme_color_font_color_disabled>` | ``Color( 0.9, 0.9, 0.9, 0.2 )`` |
  62. +---------------------------------+--------------------------------------------------------------------------+----------------------------------+
  63. | :ref:`Color<class_Color>` | :ref:`font_color_focus<class_Button_theme_color_font_color_focus>` | ``Color( 0.94, 0.94, 0.94, 1 )`` |
  64. +---------------------------------+--------------------------------------------------------------------------+----------------------------------+
  65. | :ref:`Color<class_Color>` | :ref:`font_color_hover<class_Button_theme_color_font_color_hover>` | ``Color( 0.94, 0.94, 0.94, 1 )`` |
  66. +---------------------------------+--------------------------------------------------------------------------+----------------------------------+
  67. | :ref:`Color<class_Color>` | :ref:`font_color_pressed<class_Button_theme_color_font_color_pressed>` | ``Color( 1, 1, 1, 1 )`` |
  68. +---------------------------------+--------------------------------------------------------------------------+----------------------------------+
  69. | :ref:`int<class_int>` | :ref:`hseparation<class_Button_theme_constant_hseparation>` | ``2`` |
  70. +---------------------------------+--------------------------------------------------------------------------+----------------------------------+
  71. | :ref:`Font<class_Font>` | :ref:`font<class_Button_theme_font_font>` | |
  72. +---------------------------------+--------------------------------------------------------------------------+----------------------------------+
  73. | :ref:`StyleBox<class_StyleBox>` | :ref:`disabled<class_Button_theme_style_disabled>` | |
  74. +---------------------------------+--------------------------------------------------------------------------+----------------------------------+
  75. | :ref:`StyleBox<class_StyleBox>` | :ref:`focus<class_Button_theme_style_focus>` | |
  76. +---------------------------------+--------------------------------------------------------------------------+----------------------------------+
  77. | :ref:`StyleBox<class_StyleBox>` | :ref:`hover<class_Button_theme_style_hover>` | |
  78. +---------------------------------+--------------------------------------------------------------------------+----------------------------------+
  79. | :ref:`StyleBox<class_StyleBox>` | :ref:`normal<class_Button_theme_style_normal>` | |
  80. +---------------------------------+--------------------------------------------------------------------------+----------------------------------+
  81. | :ref:`StyleBox<class_StyleBox>` | :ref:`pressed<class_Button_theme_style_pressed>` | |
  82. +---------------------------------+--------------------------------------------------------------------------+----------------------------------+
  83. .. rst-class:: classref-section-separator
  84. ----
  85. .. rst-class:: classref-descriptions-group
  86. Enumerations
  87. ------------
  88. .. _enum_Button_TextAlign:
  89. .. rst-class:: classref-enumeration
  90. enum **TextAlign**:
  91. .. _class_Button_constant_ALIGN_LEFT:
  92. .. rst-class:: classref-enumeration-constant
  93. :ref:`TextAlign<enum_Button_TextAlign>` **ALIGN_LEFT** = ``0``
  94. Align the text to the left.
  95. .. _class_Button_constant_ALIGN_CENTER:
  96. .. rst-class:: classref-enumeration-constant
  97. :ref:`TextAlign<enum_Button_TextAlign>` **ALIGN_CENTER** = ``1``
  98. Align the text to the center.
  99. .. _class_Button_constant_ALIGN_RIGHT:
  100. .. rst-class:: classref-enumeration-constant
  101. :ref:`TextAlign<enum_Button_TextAlign>` **ALIGN_RIGHT** = ``2``
  102. Align the text to the right.
  103. .. rst-class:: classref-section-separator
  104. ----
  105. .. rst-class:: classref-descriptions-group
  106. Property Descriptions
  107. ---------------------
  108. .. _class_Button_property_align:
  109. .. rst-class:: classref-property
  110. :ref:`TextAlign<enum_Button_TextAlign>` **align** = ``1``
  111. .. rst-class:: classref-property-setget
  112. - void **set_text_align** **(** :ref:`TextAlign<enum_Button_TextAlign>` value **)**
  113. - :ref:`TextAlign<enum_Button_TextAlign>` **get_text_align** **(** **)**
  114. Text alignment policy for the button's text, use one of the :ref:`TextAlign<enum_Button_TextAlign>` constants.
  115. .. rst-class:: classref-item-separator
  116. ----
  117. .. _class_Button_property_clip_text:
  118. .. rst-class:: classref-property
  119. :ref:`bool<class_bool>` **clip_text** = ``false``
  120. .. rst-class:: classref-property-setget
  121. - void **set_clip_text** **(** :ref:`bool<class_bool>` value **)**
  122. - :ref:`bool<class_bool>` **get_clip_text** **(** **)**
  123. 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.
  124. .. rst-class:: classref-item-separator
  125. ----
  126. .. _class_Button_property_expand_icon:
  127. .. rst-class:: classref-property
  128. :ref:`bool<class_bool>` **expand_icon** = ``false``
  129. .. rst-class:: classref-property-setget
  130. - void **set_expand_icon** **(** :ref:`bool<class_bool>` value **)**
  131. - :ref:`bool<class_bool>` **is_expand_icon** **(** **)**
  132. When enabled, the button's icon will expand/shrink to fit the button's size while keeping its aspect.
  133. .. rst-class:: classref-item-separator
  134. ----
  135. .. _class_Button_property_flat:
  136. .. rst-class:: classref-property
  137. :ref:`bool<class_bool>` **flat** = ``false``
  138. .. rst-class:: classref-property-setget
  139. - void **set_flat** **(** :ref:`bool<class_bool>` value **)**
  140. - :ref:`bool<class_bool>` **is_flat** **(** **)**
  141. Flat buttons don't display decoration.
  142. .. rst-class:: classref-item-separator
  143. ----
  144. .. _class_Button_property_icon:
  145. .. rst-class:: classref-property
  146. :ref:`Texture<class_Texture>` **icon**
  147. .. rst-class:: classref-property-setget
  148. - void **set_button_icon** **(** :ref:`Texture<class_Texture>` value **)**
  149. - :ref:`Texture<class_Texture>` **get_button_icon** **(** **)**
  150. Button's icon, if text is present the icon will be placed before the text.
  151. To edit margin and spacing of the icon, use ``hseparation`` theme property of **Button** and ``content_margin_*`` properties of the used :ref:`StyleBox<class_StyleBox>`\ es.
  152. .. rst-class:: classref-item-separator
  153. ----
  154. .. _class_Button_property_icon_align:
  155. .. rst-class:: classref-property
  156. :ref:`TextAlign<enum_Button_TextAlign>` **icon_align** = ``0``
  157. .. rst-class:: classref-property-setget
  158. - void **set_icon_align** **(** :ref:`TextAlign<enum_Button_TextAlign>` value **)**
  159. - :ref:`TextAlign<enum_Button_TextAlign>` **get_icon_align** **(** **)**
  160. 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.
  161. .. rst-class:: classref-item-separator
  162. ----
  163. .. _class_Button_property_text:
  164. .. rst-class:: classref-property
  165. :ref:`String<class_String>` **text** = ``""``
  166. .. rst-class:: classref-property-setget
  167. - void **set_text** **(** :ref:`String<class_String>` value **)**
  168. - :ref:`String<class_String>` **get_text** **(** **)**
  169. The button's text that will be displayed inside the button's area.
  170. .. rst-class:: classref-section-separator
  171. ----
  172. .. rst-class:: classref-descriptions-group
  173. Theme Property Descriptions
  174. ---------------------------
  175. .. _class_Button_theme_color_font_color:
  176. .. rst-class:: classref-themeproperty
  177. :ref:`Color<class_Color>` **font_color** = ``Color( 0.88, 0.88, 0.88, 1 )``
  178. Default text :ref:`Color<class_Color>` of the **Button**.
  179. .. rst-class:: classref-item-separator
  180. ----
  181. .. _class_Button_theme_color_font_color_disabled:
  182. .. rst-class:: classref-themeproperty
  183. :ref:`Color<class_Color>` **font_color_disabled** = ``Color( 0.9, 0.9, 0.9, 0.2 )``
  184. Text :ref:`Color<class_Color>` used when the **Button** is disabled.
  185. .. rst-class:: classref-item-separator
  186. ----
  187. .. _class_Button_theme_color_font_color_focus:
  188. .. rst-class:: classref-themeproperty
  189. :ref:`Color<class_Color>` **font_color_focus** = ``Color( 0.94, 0.94, 0.94, 1 )``
  190. 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.
  191. .. rst-class:: classref-item-separator
  192. ----
  193. .. _class_Button_theme_color_font_color_hover:
  194. .. rst-class:: classref-themeproperty
  195. :ref:`Color<class_Color>` **font_color_hover** = ``Color( 0.94, 0.94, 0.94, 1 )``
  196. Text :ref:`Color<class_Color>` used when the **Button** is being hovered.
  197. .. rst-class:: classref-item-separator
  198. ----
  199. .. _class_Button_theme_color_font_color_pressed:
  200. .. rst-class:: classref-themeproperty
  201. :ref:`Color<class_Color>` **font_color_pressed** = ``Color( 1, 1, 1, 1 )``
  202. Text :ref:`Color<class_Color>` used when the **Button** is being pressed.
  203. .. rst-class:: classref-item-separator
  204. ----
  205. .. _class_Button_theme_constant_hseparation:
  206. .. rst-class:: classref-themeproperty
  207. :ref:`int<class_int>` **hseparation** = ``2``
  208. The horizontal space between **Button**'s icon and text.
  209. .. rst-class:: classref-item-separator
  210. ----
  211. .. _class_Button_theme_font_font:
  212. .. rst-class:: classref-themeproperty
  213. :ref:`Font<class_Font>` **font**
  214. :ref:`Font<class_Font>` of the **Button**'s text.
  215. .. rst-class:: classref-item-separator
  216. ----
  217. .. _class_Button_theme_style_disabled:
  218. .. rst-class:: classref-themeproperty
  219. :ref:`StyleBox<class_StyleBox>` **disabled**
  220. :ref:`StyleBox<class_StyleBox>` used when the **Button** is disabled.
  221. .. rst-class:: classref-item-separator
  222. ----
  223. .. _class_Button_theme_style_focus:
  224. .. rst-class:: classref-themeproperty
  225. :ref:`StyleBox<class_StyleBox>` **focus**
  226. :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.
  227. .. rst-class:: classref-item-separator
  228. ----
  229. .. _class_Button_theme_style_hover:
  230. .. rst-class:: classref-themeproperty
  231. :ref:`StyleBox<class_StyleBox>` **hover**
  232. :ref:`StyleBox<class_StyleBox>` used when the **Button** is being hovered.
  233. .. rst-class:: classref-item-separator
  234. ----
  235. .. _class_Button_theme_style_normal:
  236. .. rst-class:: classref-themeproperty
  237. :ref:`StyleBox<class_StyleBox>` **normal**
  238. Default :ref:`StyleBox<class_StyleBox>` for the **Button**.
  239. .. rst-class:: classref-item-separator
  240. ----
  241. .. _class_Button_theme_style_pressed:
  242. .. rst-class:: classref-themeproperty
  243. :ref:`StyleBox<class_StyleBox>` **pressed**
  244. :ref:`StyleBox<class_StyleBox>` used when the **Button** is being pressed.
  245. .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
  246. .. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
  247. .. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
  248. .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)`