class_button.rst 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527
  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.6/doc/tools/make_rst.py.
  5. .. XML source: https://github.com/godotengine/godot/tree/3.6/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_hover_pressed<class_Button_theme_color_font_color_hover_pressed>` | ``Color( 1, 1, 1, 1 )`` |
  68. +---------------------------------+------------------------------------------------------------------------------------+----------------------------------+
  69. | :ref:`Color<class_Color>` | :ref:`font_color_pressed<class_Button_theme_color_font_color_pressed>` | ``Color( 1, 1, 1, 1 )`` |
  70. +---------------------------------+------------------------------------------------------------------------------------+----------------------------------+
  71. | :ref:`Color<class_Color>` | :ref:`icon_color_disabled<class_Button_theme_color_icon_color_disabled>` | ``Color( 1, 1, 1, 0.4 )`` |
  72. +---------------------------------+------------------------------------------------------------------------------------+----------------------------------+
  73. | :ref:`Color<class_Color>` | :ref:`icon_color_focus<class_Button_theme_color_icon_color_focus>` | ``Color( 1, 1, 1, 1 )`` |
  74. +---------------------------------+------------------------------------------------------------------------------------+----------------------------------+
  75. | :ref:`Color<class_Color>` | :ref:`icon_color_hover<class_Button_theme_color_icon_color_hover>` | ``Color( 1, 1, 1, 1 )`` |
  76. +---------------------------------+------------------------------------------------------------------------------------+----------------------------------+
  77. | :ref:`Color<class_Color>` | :ref:`icon_color_hover_pressed<class_Button_theme_color_icon_color_hover_pressed>` | ``Color( 1, 1, 1, 1 )`` |
  78. +---------------------------------+------------------------------------------------------------------------------------+----------------------------------+
  79. | :ref:`Color<class_Color>` | :ref:`icon_color_normal<class_Button_theme_color_icon_color_normal>` | ``Color( 1, 1, 1, 1 )`` |
  80. +---------------------------------+------------------------------------------------------------------------------------+----------------------------------+
  81. | :ref:`Color<class_Color>` | :ref:`icon_color_pressed<class_Button_theme_color_icon_color_pressed>` | ``Color( 1, 1, 1, 1 )`` |
  82. +---------------------------------+------------------------------------------------------------------------------------+----------------------------------+
  83. | :ref:`int<class_int>` | :ref:`hseparation<class_Button_theme_constant_hseparation>` | ``2`` |
  84. +---------------------------------+------------------------------------------------------------------------------------+----------------------------------+
  85. | :ref:`Font<class_Font>` | :ref:`font<class_Button_theme_font_font>` | |
  86. +---------------------------------+------------------------------------------------------------------------------------+----------------------------------+
  87. | :ref:`StyleBox<class_StyleBox>` | :ref:`disabled<class_Button_theme_style_disabled>` | |
  88. +---------------------------------+------------------------------------------------------------------------------------+----------------------------------+
  89. | :ref:`StyleBox<class_StyleBox>` | :ref:`focus<class_Button_theme_style_focus>` | |
  90. +---------------------------------+------------------------------------------------------------------------------------+----------------------------------+
  91. | :ref:`StyleBox<class_StyleBox>` | :ref:`hover<class_Button_theme_style_hover>` | |
  92. +---------------------------------+------------------------------------------------------------------------------------+----------------------------------+
  93. | :ref:`StyleBox<class_StyleBox>` | :ref:`normal<class_Button_theme_style_normal>` | |
  94. +---------------------------------+------------------------------------------------------------------------------------+----------------------------------+
  95. | :ref:`StyleBox<class_StyleBox>` | :ref:`pressed<class_Button_theme_style_pressed>` | |
  96. +---------------------------------+------------------------------------------------------------------------------------+----------------------------------+
  97. .. rst-class:: classref-section-separator
  98. ----
  99. .. rst-class:: classref-descriptions-group
  100. Enumerations
  101. ------------
  102. .. _enum_Button_TextAlign:
  103. .. rst-class:: classref-enumeration
  104. enum **TextAlign**:
  105. .. _class_Button_constant_ALIGN_LEFT:
  106. .. rst-class:: classref-enumeration-constant
  107. :ref:`TextAlign<enum_Button_TextAlign>` **ALIGN_LEFT** = ``0``
  108. Align the text to the left.
  109. .. _class_Button_constant_ALIGN_CENTER:
  110. .. rst-class:: classref-enumeration-constant
  111. :ref:`TextAlign<enum_Button_TextAlign>` **ALIGN_CENTER** = ``1``
  112. Align the text to the center.
  113. .. _class_Button_constant_ALIGN_RIGHT:
  114. .. rst-class:: classref-enumeration-constant
  115. :ref:`TextAlign<enum_Button_TextAlign>` **ALIGN_RIGHT** = ``2``
  116. Align the text to the right.
  117. .. rst-class:: classref-section-separator
  118. ----
  119. .. rst-class:: classref-descriptions-group
  120. Property Descriptions
  121. ---------------------
  122. .. _class_Button_property_align:
  123. .. rst-class:: classref-property
  124. :ref:`TextAlign<enum_Button_TextAlign>` **align** = ``1``
  125. .. rst-class:: classref-property-setget
  126. - void **set_text_align** **(** :ref:`TextAlign<enum_Button_TextAlign>` value **)**
  127. - :ref:`TextAlign<enum_Button_TextAlign>` **get_text_align** **(** **)**
  128. Text alignment policy for the button's text, use one of the :ref:`TextAlign<enum_Button_TextAlign>` constants.
  129. .. rst-class:: classref-item-separator
  130. ----
  131. .. _class_Button_property_clip_text:
  132. .. rst-class:: classref-property
  133. :ref:`bool<class_bool>` **clip_text** = ``false``
  134. .. rst-class:: classref-property-setget
  135. - void **set_clip_text** **(** :ref:`bool<class_bool>` value **)**
  136. - :ref:`bool<class_bool>` **get_clip_text** **(** **)**
  137. 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.
  138. .. rst-class:: classref-item-separator
  139. ----
  140. .. _class_Button_property_expand_icon:
  141. .. rst-class:: classref-property
  142. :ref:`bool<class_bool>` **expand_icon** = ``false``
  143. .. rst-class:: classref-property-setget
  144. - void **set_expand_icon** **(** :ref:`bool<class_bool>` value **)**
  145. - :ref:`bool<class_bool>` **is_expand_icon** **(** **)**
  146. When enabled, the button's icon will expand/shrink to fit the button's size while keeping its aspect.
  147. .. rst-class:: classref-item-separator
  148. ----
  149. .. _class_Button_property_flat:
  150. .. rst-class:: classref-property
  151. :ref:`bool<class_bool>` **flat** = ``false``
  152. .. rst-class:: classref-property-setget
  153. - void **set_flat** **(** :ref:`bool<class_bool>` value **)**
  154. - :ref:`bool<class_bool>` **is_flat** **(** **)**
  155. Flat buttons don't display decoration.
  156. .. rst-class:: classref-item-separator
  157. ----
  158. .. _class_Button_property_icon:
  159. .. rst-class:: classref-property
  160. :ref:`Texture<class_Texture>` **icon**
  161. .. rst-class:: classref-property-setget
  162. - void **set_button_icon** **(** :ref:`Texture<class_Texture>` value **)**
  163. - :ref:`Texture<class_Texture>` **get_button_icon** **(** **)**
  164. Button's icon, if text is present the icon will be placed before the text.
  165. 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.
  166. .. rst-class:: classref-item-separator
  167. ----
  168. .. _class_Button_property_icon_align:
  169. .. rst-class:: classref-property
  170. :ref:`TextAlign<enum_Button_TextAlign>` **icon_align** = ``0``
  171. .. rst-class:: classref-property-setget
  172. - void **set_icon_align** **(** :ref:`TextAlign<enum_Button_TextAlign>` value **)**
  173. - :ref:`TextAlign<enum_Button_TextAlign>` **get_icon_align** **(** **)**
  174. 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.
  175. .. rst-class:: classref-item-separator
  176. ----
  177. .. _class_Button_property_text:
  178. .. rst-class:: classref-property
  179. :ref:`String<class_String>` **text** = ``""``
  180. .. rst-class:: classref-property-setget
  181. - void **set_text** **(** :ref:`String<class_String>` value **)**
  182. - :ref:`String<class_String>` **get_text** **(** **)**
  183. The button's text that will be displayed inside the button's area.
  184. .. rst-class:: classref-section-separator
  185. ----
  186. .. rst-class:: classref-descriptions-group
  187. Theme Property Descriptions
  188. ---------------------------
  189. .. _class_Button_theme_color_font_color:
  190. .. rst-class:: classref-themeproperty
  191. :ref:`Color<class_Color>` **font_color** = ``Color( 0.88, 0.88, 0.88, 1 )``
  192. Default text :ref:`Color<class_Color>` of the **Button**.
  193. .. rst-class:: classref-item-separator
  194. ----
  195. .. _class_Button_theme_color_font_color_disabled:
  196. .. rst-class:: classref-themeproperty
  197. :ref:`Color<class_Color>` **font_color_disabled** = ``Color( 0.9, 0.9, 0.9, 0.2 )``
  198. Text :ref:`Color<class_Color>` used when the **Button** is disabled.
  199. .. rst-class:: classref-item-separator
  200. ----
  201. .. _class_Button_theme_color_font_color_focus:
  202. .. rst-class:: classref-themeproperty
  203. :ref:`Color<class_Color>` **font_color_focus** = ``Color( 0.94, 0.94, 0.94, 1 )``
  204. 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.
  205. .. rst-class:: classref-item-separator
  206. ----
  207. .. _class_Button_theme_color_font_color_hover:
  208. .. rst-class:: classref-themeproperty
  209. :ref:`Color<class_Color>` **font_color_hover** = ``Color( 0.94, 0.94, 0.94, 1 )``
  210. Text :ref:`Color<class_Color>` used when the **Button** is being hovered.
  211. .. rst-class:: classref-item-separator
  212. ----
  213. .. _class_Button_theme_color_font_color_hover_pressed:
  214. .. rst-class:: classref-themeproperty
  215. :ref:`Color<class_Color>` **font_color_hover_pressed** = ``Color( 1, 1, 1, 1 )``
  216. Text :ref:`Color<class_Color>` used when the **Button** is being hovered and pressed.
  217. .. rst-class:: classref-item-separator
  218. ----
  219. .. _class_Button_theme_color_font_color_pressed:
  220. .. rst-class:: classref-themeproperty
  221. :ref:`Color<class_Color>` **font_color_pressed** = ``Color( 1, 1, 1, 1 )``
  222. Text :ref:`Color<class_Color>` used when the **Button** is being pressed.
  223. .. rst-class:: classref-item-separator
  224. ----
  225. .. _class_Button_theme_color_icon_color_disabled:
  226. .. rst-class:: classref-themeproperty
  227. :ref:`Color<class_Color>` **icon_color_disabled** = ``Color( 1, 1, 1, 0.4 )``
  228. Icon modulate :ref:`Color<class_Color>` used when the **Button** is disabled.
  229. .. rst-class:: classref-item-separator
  230. ----
  231. .. _class_Button_theme_color_icon_color_focus:
  232. .. rst-class:: classref-themeproperty
  233. :ref:`Color<class_Color>` **icon_color_focus** = ``Color( 1, 1, 1, 1 )``
  234. 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.
  235. .. rst-class:: classref-item-separator
  236. ----
  237. .. _class_Button_theme_color_icon_color_hover:
  238. .. rst-class:: classref-themeproperty
  239. :ref:`Color<class_Color>` **icon_color_hover** = ``Color( 1, 1, 1, 1 )``
  240. Icon modulate :ref:`Color<class_Color>` used when the **Button** is being hovered.
  241. .. rst-class:: classref-item-separator
  242. ----
  243. .. _class_Button_theme_color_icon_color_hover_pressed:
  244. .. rst-class:: classref-themeproperty
  245. :ref:`Color<class_Color>` **icon_color_hover_pressed** = ``Color( 1, 1, 1, 1 )``
  246. Icon modulate :ref:`Color<class_Color>` used when the **Button** is being hovered and pressed.
  247. .. rst-class:: classref-item-separator
  248. ----
  249. .. _class_Button_theme_color_icon_color_normal:
  250. .. rst-class:: classref-themeproperty
  251. :ref:`Color<class_Color>` **icon_color_normal** = ``Color( 1, 1, 1, 1 )``
  252. Default icon modulate :ref:`Color<class_Color>` of the **Button**.
  253. .. rst-class:: classref-item-separator
  254. ----
  255. .. _class_Button_theme_color_icon_color_pressed:
  256. .. rst-class:: classref-themeproperty
  257. :ref:`Color<class_Color>` **icon_color_pressed** = ``Color( 1, 1, 1, 1 )``
  258. Icon modulate :ref:`Color<class_Color>` used when the **Button** is being pressed.
  259. .. rst-class:: classref-item-separator
  260. ----
  261. .. _class_Button_theme_constant_hseparation:
  262. .. rst-class:: classref-themeproperty
  263. :ref:`int<class_int>` **hseparation** = ``2``
  264. The horizontal space between **Button**'s icon and text.
  265. .. rst-class:: classref-item-separator
  266. ----
  267. .. _class_Button_theme_font_font:
  268. .. rst-class:: classref-themeproperty
  269. :ref:`Font<class_Font>` **font**
  270. :ref:`Font<class_Font>` of the **Button**'s text.
  271. .. rst-class:: classref-item-separator
  272. ----
  273. .. _class_Button_theme_style_disabled:
  274. .. rst-class:: classref-themeproperty
  275. :ref:`StyleBox<class_StyleBox>` **disabled**
  276. :ref:`StyleBox<class_StyleBox>` used when the **Button** is disabled.
  277. .. rst-class:: classref-item-separator
  278. ----
  279. .. _class_Button_theme_style_focus:
  280. .. rst-class:: classref-themeproperty
  281. :ref:`StyleBox<class_StyleBox>` **focus**
  282. :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.
  283. .. rst-class:: classref-item-separator
  284. ----
  285. .. _class_Button_theme_style_hover:
  286. .. rst-class:: classref-themeproperty
  287. :ref:`StyleBox<class_StyleBox>` **hover**
  288. :ref:`StyleBox<class_StyleBox>` used when the **Button** is being hovered.
  289. .. rst-class:: classref-item-separator
  290. ----
  291. .. _class_Button_theme_style_normal:
  292. .. rst-class:: classref-themeproperty
  293. :ref:`StyleBox<class_StyleBox>` **normal**
  294. Default :ref:`StyleBox<class_StyleBox>` for the **Button**.
  295. .. rst-class:: classref-item-separator
  296. ----
  297. .. _class_Button_theme_style_pressed:
  298. .. rst-class:: classref-themeproperty
  299. :ref:`StyleBox<class_StyleBox>` **pressed**
  300. :ref:`StyleBox<class_StyleBox>` used when the **Button** is being pressed.
  301. .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
  302. .. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
  303. .. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
  304. .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)`