class_button.rst 32 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742
  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/master/doc/tools/make_rst.py.
  5. .. XML source: https://github.com/godotengine/godot/tree/master/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>`
  11. A themed button that can contain text and an icon.
  12. .. rst-class:: classref-introduction-group
  13. Description
  14. -----------
  15. **Button** is the standard themed button. It can contain text and an icon, and it 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. .. tabs::
  18. .. code-tab:: gdscript
  19. func _ready():
  20. var button = Button.new()
  21. button.text = "Click me"
  22. button.pressed.connect(self._button_pressed)
  23. add_child(button)
  24. func _button_pressed():
  25. print("Hello world!")
  26. .. code-tab:: csharp
  27. public override void _Ready()
  28. {
  29. var button = new Button();
  30. button.Text = "Click me";
  31. button.Pressed += ButtonPressed;
  32. AddChild(button);
  33. }
  34. private void ButtonPressed()
  35. {
  36. GD.Print("Hello world!");
  37. }
  38. See also :ref:`BaseButton<class_BaseButton>` which contains common properties and methods associated with this node.
  39. \ **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.
  40. .. rst-class:: classref-introduction-group
  41. Tutorials
  42. ---------
  43. - `2D Dodge The Creeps Demo <https://godotengine.org/asset-library/asset/515>`__
  44. - `OS Test Demo <https://godotengine.org/asset-library/asset/677>`__
  45. .. rst-class:: classref-reftable-group
  46. Properties
  47. ----------
  48. .. table::
  49. :widths: auto
  50. +-------------------------------------------------------------------+-------------------------------------------------------------------------------+-----------+
  51. | :ref:`HorizontalAlignment<enum_@GlobalScope_HorizontalAlignment>` | :ref:`alignment<class_Button_property_alignment>` | ``1`` |
  52. +-------------------------------------------------------------------+-------------------------------------------------------------------------------+-----------+
  53. | :ref:`bool<class_bool>` | :ref:`clip_text<class_Button_property_clip_text>` | ``false`` |
  54. +-------------------------------------------------------------------+-------------------------------------------------------------------------------+-----------+
  55. | :ref:`bool<class_bool>` | :ref:`expand_icon<class_Button_property_expand_icon>` | ``false`` |
  56. +-------------------------------------------------------------------+-------------------------------------------------------------------------------+-----------+
  57. | :ref:`bool<class_bool>` | :ref:`flat<class_Button_property_flat>` | ``false`` |
  58. +-------------------------------------------------------------------+-------------------------------------------------------------------------------+-----------+
  59. | :ref:`Texture2D<class_Texture2D>` | :ref:`icon<class_Button_property_icon>` | |
  60. +-------------------------------------------------------------------+-------------------------------------------------------------------------------+-----------+
  61. | :ref:`HorizontalAlignment<enum_@GlobalScope_HorizontalAlignment>` | :ref:`icon_alignment<class_Button_property_icon_alignment>` | ``0`` |
  62. +-------------------------------------------------------------------+-------------------------------------------------------------------------------+-----------+
  63. | :ref:`String<class_String>` | :ref:`language<class_Button_property_language>` | ``""`` |
  64. +-------------------------------------------------------------------+-------------------------------------------------------------------------------+-----------+
  65. | :ref:`String<class_String>` | :ref:`text<class_Button_property_text>` | ``""`` |
  66. +-------------------------------------------------------------------+-------------------------------------------------------------------------------+-----------+
  67. | :ref:`TextDirection<enum_Control_TextDirection>` | :ref:`text_direction<class_Button_property_text_direction>` | ``0`` |
  68. +-------------------------------------------------------------------+-------------------------------------------------------------------------------+-----------+
  69. | :ref:`OverrunBehavior<enum_TextServer_OverrunBehavior>` | :ref:`text_overrun_behavior<class_Button_property_text_overrun_behavior>` | ``0`` |
  70. +-------------------------------------------------------------------+-------------------------------------------------------------------------------+-----------+
  71. | :ref:`VerticalAlignment<enum_@GlobalScope_VerticalAlignment>` | :ref:`vertical_icon_alignment<class_Button_property_vertical_icon_alignment>` | ``1`` |
  72. +-------------------------------------------------------------------+-------------------------------------------------------------------------------+-----------+
  73. .. rst-class:: classref-reftable-group
  74. Theme Properties
  75. ----------------
  76. .. table::
  77. :widths: auto
  78. +-----------------------------------+------------------------------------------------------------------------------------+-------------------------------------+
  79. | :ref:`Color<class_Color>` | :ref:`font_color<class_Button_theme_color_font_color>` | ``Color(0.875, 0.875, 0.875, 1)`` |
  80. +-----------------------------------+------------------------------------------------------------------------------------+-------------------------------------+
  81. | :ref:`Color<class_Color>` | :ref:`font_disabled_color<class_Button_theme_color_font_disabled_color>` | ``Color(0.875, 0.875, 0.875, 0.5)`` |
  82. +-----------------------------------+------------------------------------------------------------------------------------+-------------------------------------+
  83. | :ref:`Color<class_Color>` | :ref:`font_focus_color<class_Button_theme_color_font_focus_color>` | ``Color(0.95, 0.95, 0.95, 1)`` |
  84. +-----------------------------------+------------------------------------------------------------------------------------+-------------------------------------+
  85. | :ref:`Color<class_Color>` | :ref:`font_hover_color<class_Button_theme_color_font_hover_color>` | ``Color(0.95, 0.95, 0.95, 1)`` |
  86. +-----------------------------------+------------------------------------------------------------------------------------+-------------------------------------+
  87. | :ref:`Color<class_Color>` | :ref:`font_hover_pressed_color<class_Button_theme_color_font_hover_pressed_color>` | ``Color(1, 1, 1, 1)`` |
  88. +-----------------------------------+------------------------------------------------------------------------------------+-------------------------------------+
  89. | :ref:`Color<class_Color>` | :ref:`font_outline_color<class_Button_theme_color_font_outline_color>` | ``Color(1, 1, 1, 1)`` |
  90. +-----------------------------------+------------------------------------------------------------------------------------+-------------------------------------+
  91. | :ref:`Color<class_Color>` | :ref:`font_pressed_color<class_Button_theme_color_font_pressed_color>` | ``Color(1, 1, 1, 1)`` |
  92. +-----------------------------------+------------------------------------------------------------------------------------+-------------------------------------+
  93. | :ref:`Color<class_Color>` | :ref:`icon_disabled_color<class_Button_theme_color_icon_disabled_color>` | ``Color(1, 1, 1, 0.4)`` |
  94. +-----------------------------------+------------------------------------------------------------------------------------+-------------------------------------+
  95. | :ref:`Color<class_Color>` | :ref:`icon_focus_color<class_Button_theme_color_icon_focus_color>` | ``Color(1, 1, 1, 1)`` |
  96. +-----------------------------------+------------------------------------------------------------------------------------+-------------------------------------+
  97. | :ref:`Color<class_Color>` | :ref:`icon_hover_color<class_Button_theme_color_icon_hover_color>` | ``Color(1, 1, 1, 1)`` |
  98. +-----------------------------------+------------------------------------------------------------------------------------+-------------------------------------+
  99. | :ref:`Color<class_Color>` | :ref:`icon_hover_pressed_color<class_Button_theme_color_icon_hover_pressed_color>` | ``Color(1, 1, 1, 1)`` |
  100. +-----------------------------------+------------------------------------------------------------------------------------+-------------------------------------+
  101. | :ref:`Color<class_Color>` | :ref:`icon_normal_color<class_Button_theme_color_icon_normal_color>` | ``Color(1, 1, 1, 1)`` |
  102. +-----------------------------------+------------------------------------------------------------------------------------+-------------------------------------+
  103. | :ref:`Color<class_Color>` | :ref:`icon_pressed_color<class_Button_theme_color_icon_pressed_color>` | ``Color(1, 1, 1, 1)`` |
  104. +-----------------------------------+------------------------------------------------------------------------------------+-------------------------------------+
  105. | :ref:`int<class_int>` | :ref:`h_separation<class_Button_theme_constant_h_separation>` | ``4`` |
  106. +-----------------------------------+------------------------------------------------------------------------------------+-------------------------------------+
  107. | :ref:`int<class_int>` | :ref:`icon_max_width<class_Button_theme_constant_icon_max_width>` | ``0`` |
  108. +-----------------------------------+------------------------------------------------------------------------------------+-------------------------------------+
  109. | :ref:`int<class_int>` | :ref:`outline_size<class_Button_theme_constant_outline_size>` | ``0`` |
  110. +-----------------------------------+------------------------------------------------------------------------------------+-------------------------------------+
  111. | :ref:`Font<class_Font>` | :ref:`font<class_Button_theme_font_font>` | |
  112. +-----------------------------------+------------------------------------------------------------------------------------+-------------------------------------+
  113. | :ref:`int<class_int>` | :ref:`font_size<class_Button_theme_font_size_font_size>` | |
  114. +-----------------------------------+------------------------------------------------------------------------------------+-------------------------------------+
  115. | :ref:`Texture2D<class_Texture2D>` | :ref:`icon<class_Button_theme_icon_icon>` | |
  116. +-----------------------------------+------------------------------------------------------------------------------------+-------------------------------------+
  117. | :ref:`StyleBox<class_StyleBox>` | :ref:`disabled<class_Button_theme_style_disabled>` | |
  118. +-----------------------------------+------------------------------------------------------------------------------------+-------------------------------------+
  119. | :ref:`StyleBox<class_StyleBox>` | :ref:`disabled_mirrored<class_Button_theme_style_disabled_mirrored>` | |
  120. +-----------------------------------+------------------------------------------------------------------------------------+-------------------------------------+
  121. | :ref:`StyleBox<class_StyleBox>` | :ref:`focus<class_Button_theme_style_focus>` | |
  122. +-----------------------------------+------------------------------------------------------------------------------------+-------------------------------------+
  123. | :ref:`StyleBox<class_StyleBox>` | :ref:`hover<class_Button_theme_style_hover>` | |
  124. +-----------------------------------+------------------------------------------------------------------------------------+-------------------------------------+
  125. | :ref:`StyleBox<class_StyleBox>` | :ref:`hover_mirrored<class_Button_theme_style_hover_mirrored>` | |
  126. +-----------------------------------+------------------------------------------------------------------------------------+-------------------------------------+
  127. | :ref:`StyleBox<class_StyleBox>` | :ref:`hover_pressed<class_Button_theme_style_hover_pressed>` | |
  128. +-----------------------------------+------------------------------------------------------------------------------------+-------------------------------------+
  129. | :ref:`StyleBox<class_StyleBox>` | :ref:`hover_pressed_mirrored<class_Button_theme_style_hover_pressed_mirrored>` | |
  130. +-----------------------------------+------------------------------------------------------------------------------------+-------------------------------------+
  131. | :ref:`StyleBox<class_StyleBox>` | :ref:`normal<class_Button_theme_style_normal>` | |
  132. +-----------------------------------+------------------------------------------------------------------------------------+-------------------------------------+
  133. | :ref:`StyleBox<class_StyleBox>` | :ref:`normal_mirrored<class_Button_theme_style_normal_mirrored>` | |
  134. +-----------------------------------+------------------------------------------------------------------------------------+-------------------------------------+
  135. | :ref:`StyleBox<class_StyleBox>` | :ref:`pressed<class_Button_theme_style_pressed>` | |
  136. +-----------------------------------+------------------------------------------------------------------------------------+-------------------------------------+
  137. | :ref:`StyleBox<class_StyleBox>` | :ref:`pressed_mirrored<class_Button_theme_style_pressed_mirrored>` | |
  138. +-----------------------------------+------------------------------------------------------------------------------------+-------------------------------------+
  139. .. rst-class:: classref-section-separator
  140. ----
  141. .. rst-class:: classref-descriptions-group
  142. Property Descriptions
  143. ---------------------
  144. .. _class_Button_property_alignment:
  145. .. rst-class:: classref-property
  146. :ref:`HorizontalAlignment<enum_@GlobalScope_HorizontalAlignment>` **alignment** = ``1``
  147. .. rst-class:: classref-property-setget
  148. - void **set_text_alignment** **(** :ref:`HorizontalAlignment<enum_@GlobalScope_HorizontalAlignment>` value **)**
  149. - :ref:`HorizontalAlignment<enum_@GlobalScope_HorizontalAlignment>` **get_text_alignment** **(** **)**
  150. Text alignment policy for the button's text, use one of the :ref:`HorizontalAlignment<enum_@GlobalScope_HorizontalAlignment>` constants.
  151. .. rst-class:: classref-item-separator
  152. ----
  153. .. _class_Button_property_clip_text:
  154. .. rst-class:: classref-property
  155. :ref:`bool<class_bool>` **clip_text** = ``false``
  156. .. rst-class:: classref-property-setget
  157. - void **set_clip_text** **(** :ref:`bool<class_bool>` value **)**
  158. - :ref:`bool<class_bool>` **get_clip_text** **(** **)**
  159. 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.
  160. .. rst-class:: classref-item-separator
  161. ----
  162. .. _class_Button_property_expand_icon:
  163. .. rst-class:: classref-property
  164. :ref:`bool<class_bool>` **expand_icon** = ``false``
  165. .. rst-class:: classref-property-setget
  166. - void **set_expand_icon** **(** :ref:`bool<class_bool>` value **)**
  167. - :ref:`bool<class_bool>` **is_expand_icon** **(** **)**
  168. When enabled, the button's icon will expand/shrink to fit the button's size while keeping its aspect. See also :ref:`icon_max_width<class_Button_theme_constant_icon_max_width>`.
  169. .. rst-class:: classref-item-separator
  170. ----
  171. .. _class_Button_property_flat:
  172. .. rst-class:: classref-property
  173. :ref:`bool<class_bool>` **flat** = ``false``
  174. .. rst-class:: classref-property-setget
  175. - void **set_flat** **(** :ref:`bool<class_bool>` value **)**
  176. - :ref:`bool<class_bool>` **is_flat** **(** **)**
  177. Flat buttons don't display decoration.
  178. .. rst-class:: classref-item-separator
  179. ----
  180. .. _class_Button_property_icon:
  181. .. rst-class:: classref-property
  182. :ref:`Texture2D<class_Texture2D>` **icon**
  183. .. rst-class:: classref-property-setget
  184. - void **set_button_icon** **(** :ref:`Texture2D<class_Texture2D>` value **)**
  185. - :ref:`Texture2D<class_Texture2D>` **get_button_icon** **(** **)**
  186. Button's icon, if text is present the icon will be placed before the text.
  187. To edit margin and spacing of the icon, use :ref:`h_separation<class_Button_theme_constant_h_separation>` theme property and ``content_margin_*`` properties of the used :ref:`StyleBox<class_StyleBox>`\ es.
  188. .. rst-class:: classref-item-separator
  189. ----
  190. .. _class_Button_property_icon_alignment:
  191. .. rst-class:: classref-property
  192. :ref:`HorizontalAlignment<enum_@GlobalScope_HorizontalAlignment>` **icon_alignment** = ``0``
  193. .. rst-class:: classref-property-setget
  194. - void **set_icon_alignment** **(** :ref:`HorizontalAlignment<enum_@GlobalScope_HorizontalAlignment>` value **)**
  195. - :ref:`HorizontalAlignment<enum_@GlobalScope_HorizontalAlignment>` **get_icon_alignment** **(** **)**
  196. Specifies if the icon should be aligned horizontally to the left, right, or center of a button. Uses the same :ref:`HorizontalAlignment<enum_@GlobalScope_HorizontalAlignment>` constants as the text alignment. If centered horizontally and vertically, text will draw on top of the icon.
  197. .. rst-class:: classref-item-separator
  198. ----
  199. .. _class_Button_property_language:
  200. .. rst-class:: classref-property
  201. :ref:`String<class_String>` **language** = ``""``
  202. .. rst-class:: classref-property-setget
  203. - void **set_language** **(** :ref:`String<class_String>` value **)**
  204. - :ref:`String<class_String>` **get_language** **(** **)**
  205. Language code used for line-breaking and text shaping algorithms, if left empty current locale is used instead.
  206. .. rst-class:: classref-item-separator
  207. ----
  208. .. _class_Button_property_text:
  209. .. rst-class:: classref-property
  210. :ref:`String<class_String>` **text** = ``""``
  211. .. rst-class:: classref-property-setget
  212. - void **set_text** **(** :ref:`String<class_String>` value **)**
  213. - :ref:`String<class_String>` **get_text** **(** **)**
  214. The button's text that will be displayed inside the button's area.
  215. .. rst-class:: classref-item-separator
  216. ----
  217. .. _class_Button_property_text_direction:
  218. .. rst-class:: classref-property
  219. :ref:`TextDirection<enum_Control_TextDirection>` **text_direction** = ``0``
  220. .. rst-class:: classref-property-setget
  221. - void **set_text_direction** **(** :ref:`TextDirection<enum_Control_TextDirection>` value **)**
  222. - :ref:`TextDirection<enum_Control_TextDirection>` **get_text_direction** **(** **)**
  223. Base text writing direction.
  224. .. rst-class:: classref-item-separator
  225. ----
  226. .. _class_Button_property_text_overrun_behavior:
  227. .. rst-class:: classref-property
  228. :ref:`OverrunBehavior<enum_TextServer_OverrunBehavior>` **text_overrun_behavior** = ``0``
  229. .. rst-class:: classref-property-setget
  230. - void **set_text_overrun_behavior** **(** :ref:`OverrunBehavior<enum_TextServer_OverrunBehavior>` value **)**
  231. - :ref:`OverrunBehavior<enum_TextServer_OverrunBehavior>` **get_text_overrun_behavior** **(** **)**
  232. Sets the clipping behavior when the text exceeds the node's bounding rectangle. See :ref:`OverrunBehavior<enum_TextServer_OverrunBehavior>` for a description of all modes.
  233. .. rst-class:: classref-item-separator
  234. ----
  235. .. _class_Button_property_vertical_icon_alignment:
  236. .. rst-class:: classref-property
  237. :ref:`VerticalAlignment<enum_@GlobalScope_VerticalAlignment>` **vertical_icon_alignment** = ``1``
  238. .. rst-class:: classref-property-setget
  239. - void **set_vertical_icon_alignment** **(** :ref:`VerticalAlignment<enum_@GlobalScope_VerticalAlignment>` value **)**
  240. - :ref:`VerticalAlignment<enum_@GlobalScope_VerticalAlignment>` **get_vertical_icon_alignment** **(** **)**
  241. Specifies if the icon should be aligned vertically to the top, bottom, or center of a button. Uses the same :ref:`VerticalAlignment<enum_@GlobalScope_VerticalAlignment>` constants as the text alignment. If centered horizontally and vertically, text will draw on top of the icon.
  242. .. rst-class:: classref-section-separator
  243. ----
  244. .. rst-class:: classref-descriptions-group
  245. Theme Property Descriptions
  246. ---------------------------
  247. .. _class_Button_theme_color_font_color:
  248. .. rst-class:: classref-themeproperty
  249. :ref:`Color<class_Color>` **font_color** = ``Color(0.875, 0.875, 0.875, 1)``
  250. Default text :ref:`Color<class_Color>` of the **Button**.
  251. .. rst-class:: classref-item-separator
  252. ----
  253. .. _class_Button_theme_color_font_disabled_color:
  254. .. rst-class:: classref-themeproperty
  255. :ref:`Color<class_Color>` **font_disabled_color** = ``Color(0.875, 0.875, 0.875, 0.5)``
  256. Text :ref:`Color<class_Color>` used when the **Button** is disabled.
  257. .. rst-class:: classref-item-separator
  258. ----
  259. .. _class_Button_theme_color_font_focus_color:
  260. .. rst-class:: classref-themeproperty
  261. :ref:`Color<class_Color>` **font_focus_color** = ``Color(0.95, 0.95, 0.95, 1)``
  262. 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.
  263. .. rst-class:: classref-item-separator
  264. ----
  265. .. _class_Button_theme_color_font_hover_color:
  266. .. rst-class:: classref-themeproperty
  267. :ref:`Color<class_Color>` **font_hover_color** = ``Color(0.95, 0.95, 0.95, 1)``
  268. Text :ref:`Color<class_Color>` used when the **Button** is being hovered.
  269. .. rst-class:: classref-item-separator
  270. ----
  271. .. _class_Button_theme_color_font_hover_pressed_color:
  272. .. rst-class:: classref-themeproperty
  273. :ref:`Color<class_Color>` **font_hover_pressed_color** = ``Color(1, 1, 1, 1)``
  274. Text :ref:`Color<class_Color>` used when the **Button** is being hovered and pressed.
  275. .. rst-class:: classref-item-separator
  276. ----
  277. .. _class_Button_theme_color_font_outline_color:
  278. .. rst-class:: classref-themeproperty
  279. :ref:`Color<class_Color>` **font_outline_color** = ``Color(1, 1, 1, 1)``
  280. The tint of text outline of the **Button**.
  281. .. rst-class:: classref-item-separator
  282. ----
  283. .. _class_Button_theme_color_font_pressed_color:
  284. .. rst-class:: classref-themeproperty
  285. :ref:`Color<class_Color>` **font_pressed_color** = ``Color(1, 1, 1, 1)``
  286. Text :ref:`Color<class_Color>` used when the **Button** is being pressed.
  287. .. rst-class:: classref-item-separator
  288. ----
  289. .. _class_Button_theme_color_icon_disabled_color:
  290. .. rst-class:: classref-themeproperty
  291. :ref:`Color<class_Color>` **icon_disabled_color** = ``Color(1, 1, 1, 0.4)``
  292. Icon modulate :ref:`Color<class_Color>` used when the **Button** is disabled.
  293. .. rst-class:: classref-item-separator
  294. ----
  295. .. _class_Button_theme_color_icon_focus_color:
  296. .. rst-class:: classref-themeproperty
  297. :ref:`Color<class_Color>` **icon_focus_color** = ``Color(1, 1, 1, 1)``
  298. 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.
  299. .. rst-class:: classref-item-separator
  300. ----
  301. .. _class_Button_theme_color_icon_hover_color:
  302. .. rst-class:: classref-themeproperty
  303. :ref:`Color<class_Color>` **icon_hover_color** = ``Color(1, 1, 1, 1)``
  304. Icon modulate :ref:`Color<class_Color>` used when the **Button** is being hovered.
  305. .. rst-class:: classref-item-separator
  306. ----
  307. .. _class_Button_theme_color_icon_hover_pressed_color:
  308. .. rst-class:: classref-themeproperty
  309. :ref:`Color<class_Color>` **icon_hover_pressed_color** = ``Color(1, 1, 1, 1)``
  310. Icon modulate :ref:`Color<class_Color>` used when the **Button** is being hovered and pressed.
  311. .. rst-class:: classref-item-separator
  312. ----
  313. .. _class_Button_theme_color_icon_normal_color:
  314. .. rst-class:: classref-themeproperty
  315. :ref:`Color<class_Color>` **icon_normal_color** = ``Color(1, 1, 1, 1)``
  316. Default icon modulate :ref:`Color<class_Color>` of the **Button**.
  317. .. rst-class:: classref-item-separator
  318. ----
  319. .. _class_Button_theme_color_icon_pressed_color:
  320. .. rst-class:: classref-themeproperty
  321. :ref:`Color<class_Color>` **icon_pressed_color** = ``Color(1, 1, 1, 1)``
  322. Icon modulate :ref:`Color<class_Color>` used when the **Button** is being pressed.
  323. .. rst-class:: classref-item-separator
  324. ----
  325. .. _class_Button_theme_constant_h_separation:
  326. .. rst-class:: classref-themeproperty
  327. :ref:`int<class_int>` **h_separation** = ``4``
  328. The horizontal space between **Button**'s icon and text. Negative values will be treated as ``0`` when used.
  329. .. rst-class:: classref-item-separator
  330. ----
  331. .. _class_Button_theme_constant_icon_max_width:
  332. .. rst-class:: classref-themeproperty
  333. :ref:`int<class_int>` **icon_max_width** = ``0``
  334. The maximum allowed width of the **Button**'s icon. This limit is applied on top of the default size of the icon, or its expanded size if :ref:`expand_icon<class_Button_property_expand_icon>` is ``true``. The height is adjusted according to the icon's ratio.
  335. .. rst-class:: classref-item-separator
  336. ----
  337. .. _class_Button_theme_constant_outline_size:
  338. .. rst-class:: classref-themeproperty
  339. :ref:`int<class_int>` **outline_size** = ``0``
  340. The size of the text outline.
  341. \ **Note:** If using a font with :ref:`FontFile.multichannel_signed_distance_field<class_FontFile_property_multichannel_signed_distance_field>` enabled, its :ref:`FontFile.msdf_pixel_range<class_FontFile_property_msdf_pixel_range>` must be set to at least *twice* the value of :ref:`outline_size<class_Button_theme_constant_outline_size>` for outline rendering to look correct. Otherwise, the outline may appear to be cut off earlier than intended.
  342. .. rst-class:: classref-item-separator
  343. ----
  344. .. _class_Button_theme_font_font:
  345. .. rst-class:: classref-themeproperty
  346. :ref:`Font<class_Font>` **font**
  347. :ref:`Font<class_Font>` of the **Button**'s text.
  348. .. rst-class:: classref-item-separator
  349. ----
  350. .. _class_Button_theme_font_size_font_size:
  351. .. rst-class:: classref-themeproperty
  352. :ref:`int<class_int>` **font_size**
  353. Font size of the **Button**'s text.
  354. .. rst-class:: classref-item-separator
  355. ----
  356. .. _class_Button_theme_icon_icon:
  357. .. rst-class:: classref-themeproperty
  358. :ref:`Texture2D<class_Texture2D>` **icon**
  359. Default icon for the **Button**. Appears only if :ref:`icon<class_Button_property_icon>` is not assigned.
  360. .. rst-class:: classref-item-separator
  361. ----
  362. .. _class_Button_theme_style_disabled:
  363. .. rst-class:: classref-themeproperty
  364. :ref:`StyleBox<class_StyleBox>` **disabled**
  365. :ref:`StyleBox<class_StyleBox>` used when the **Button** is disabled.
  366. .. rst-class:: classref-item-separator
  367. ----
  368. .. _class_Button_theme_style_disabled_mirrored:
  369. .. rst-class:: classref-themeproperty
  370. :ref:`StyleBox<class_StyleBox>` **disabled_mirrored**
  371. :ref:`StyleBox<class_StyleBox>` used when the **Button** is disabled (for right-to-left layouts).
  372. .. rst-class:: classref-item-separator
  373. ----
  374. .. _class_Button_theme_style_focus:
  375. .. rst-class:: classref-themeproperty
  376. :ref:`StyleBox<class_StyleBox>` **focus**
  377. :ref:`StyleBox<class_StyleBox>` used when the **Button** is focused. The :ref:`focus<class_Button_theme_style_focus>` :ref:`StyleBox<class_StyleBox>` is displayed *over* the base :ref:`StyleBox<class_StyleBox>`, so a partially transparent :ref:`StyleBox<class_StyleBox>` should be used to ensure the base :ref:`StyleBox<class_StyleBox>` remains visible. A :ref:`StyleBox<class_StyleBox>` that represents an outline or an underline works well for this purpose. To disable the focus visual effect, assign a :ref:`StyleBoxEmpty<class_StyleBoxEmpty>` resource. Note that disabling the focus visual effect will harm keyboard/controller navigation usability, so this is not recommended for accessibility reasons.
  378. .. rst-class:: classref-item-separator
  379. ----
  380. .. _class_Button_theme_style_hover:
  381. .. rst-class:: classref-themeproperty
  382. :ref:`StyleBox<class_StyleBox>` **hover**
  383. :ref:`StyleBox<class_StyleBox>` used when the **Button** is being hovered.
  384. .. rst-class:: classref-item-separator
  385. ----
  386. .. _class_Button_theme_style_hover_mirrored:
  387. .. rst-class:: classref-themeproperty
  388. :ref:`StyleBox<class_StyleBox>` **hover_mirrored**
  389. :ref:`StyleBox<class_StyleBox>` used when the **Button** is being hovered (for right-to-left layouts).
  390. .. rst-class:: classref-item-separator
  391. ----
  392. .. _class_Button_theme_style_hover_pressed:
  393. .. rst-class:: classref-themeproperty
  394. :ref:`StyleBox<class_StyleBox>` **hover_pressed**
  395. :ref:`StyleBox<class_StyleBox>` used when the **Button** is being pressed and hovered at the same time.
  396. .. rst-class:: classref-item-separator
  397. ----
  398. .. _class_Button_theme_style_hover_pressed_mirrored:
  399. .. rst-class:: classref-themeproperty
  400. :ref:`StyleBox<class_StyleBox>` **hover_pressed_mirrored**
  401. :ref:`StyleBox<class_StyleBox>` used when the **Button** is being pressed and hovered at the same time (for right-to-left layouts).
  402. .. rst-class:: classref-item-separator
  403. ----
  404. .. _class_Button_theme_style_normal:
  405. .. rst-class:: classref-themeproperty
  406. :ref:`StyleBox<class_StyleBox>` **normal**
  407. Default :ref:`StyleBox<class_StyleBox>` for the **Button**.
  408. .. rst-class:: classref-item-separator
  409. ----
  410. .. _class_Button_theme_style_normal_mirrored:
  411. .. rst-class:: classref-themeproperty
  412. :ref:`StyleBox<class_StyleBox>` **normal_mirrored**
  413. Default :ref:`StyleBox<class_StyleBox>` for the **Button** (for right-to-left layouts).
  414. .. rst-class:: classref-item-separator
  415. ----
  416. .. _class_Button_theme_style_pressed:
  417. .. rst-class:: classref-themeproperty
  418. :ref:`StyleBox<class_StyleBox>` **pressed**
  419. :ref:`StyleBox<class_StyleBox>` used when the **Button** is being pressed.
  420. .. rst-class:: classref-item-separator
  421. ----
  422. .. _class_Button_theme_style_pressed_mirrored:
  423. .. rst-class:: classref-themeproperty
  424. :ref:`StyleBox<class_StyleBox>` **pressed_mirrored**
  425. :ref:`StyleBox<class_StyleBox>` used when the **Button** is being pressed (for right-to-left layouts).
  426. .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
  427. .. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
  428. .. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
  429. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`
  430. .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)`
  431. .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)`
  432. .. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)`