class_optionbutton.rst 42 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867
  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/OptionButton.xml.
  6. .. _class_OptionButton:
  7. OptionButton
  8. ============
  9. **Inherits:** :ref:`Button<class_Button>` **<** :ref:`BaseButton<class_BaseButton>` **<** :ref:`Control<class_Control>` **<** :ref:`CanvasItem<class_CanvasItem>` **<** :ref:`Node<class_Node>` **<** :ref:`Object<class_Object>`
  10. Button control that provides selectable options when pressed.
  11. .. rst-class:: classref-introduction-group
  12. Description
  13. -----------
  14. OptionButton is a type button that provides a selectable list of items when pressed. The item selected becomes the "current" item and is displayed as the button text.
  15. See also :ref:`BaseButton<class_BaseButton>` which contains common properties and methods associated with this node.
  16. \ **Note:** Properties :ref:`Button.text<class_Button_property_text>` and :ref:`Button.icon<class_Button_property_icon>` are automatically set based on the selected item. They shouldn't be changed manually.
  17. .. rst-class:: classref-reftable-group
  18. Properties
  19. ----------
  20. .. table::
  21. :widths: auto
  22. +-------------------------------------------------------------------+-----------------------------------------------------------------------------+-------------------------------------------------------------------------------+
  23. | :ref:`ActionMode<enum_BaseButton_ActionMode>` | action_mode | ``0`` (overrides :ref:`BaseButton<class_BaseButton_property_action_mode>`) |
  24. +-------------------------------------------------------------------+-----------------------------------------------------------------------------+-------------------------------------------------------------------------------+
  25. | :ref:`HorizontalAlignment<enum_@GlobalScope_HorizontalAlignment>` | alignment | ``0`` (overrides :ref:`Button<class_Button_property_alignment>`) |
  26. +-------------------------------------------------------------------+-----------------------------------------------------------------------------+-------------------------------------------------------------------------------+
  27. | :ref:`bool<class_bool>` | :ref:`fit_to_longest_item<class_OptionButton_property_fit_to_longest_item>` | ``true`` |
  28. +-------------------------------------------------------------------+-----------------------------------------------------------------------------+-------------------------------------------------------------------------------+
  29. | :ref:`int<class_int>` | :ref:`item_count<class_OptionButton_property_item_count>` | ``0`` |
  30. +-------------------------------------------------------------------+-----------------------------------------------------------------------------+-------------------------------------------------------------------------------+
  31. | :ref:`int<class_int>` | :ref:`selected<class_OptionButton_property_selected>` | ``-1`` |
  32. +-------------------------------------------------------------------+-----------------------------------------------------------------------------+-------------------------------------------------------------------------------+
  33. | :ref:`bool<class_bool>` | toggle_mode | ``true`` (overrides :ref:`BaseButton<class_BaseButton_property_toggle_mode>`) |
  34. +-------------------------------------------------------------------+-----------------------------------------------------------------------------+-------------------------------------------------------------------------------+
  35. .. rst-class:: classref-reftable-group
  36. Methods
  37. -------
  38. .. table::
  39. :widths: auto
  40. +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  41. | void | :ref:`add_icon_item<class_OptionButton_method_add_icon_item>` **(** :ref:`Texture2D<class_Texture2D>` texture, :ref:`String<class_String>` label, :ref:`int<class_int>` id=-1 **)** |
  42. +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  43. | void | :ref:`add_item<class_OptionButton_method_add_item>` **(** :ref:`String<class_String>` label, :ref:`int<class_int>` id=-1 **)** |
  44. +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  45. | void | :ref:`add_separator<class_OptionButton_method_add_separator>` **(** :ref:`String<class_String>` text="" **)** |
  46. +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  47. | void | :ref:`clear<class_OptionButton_method_clear>` **(** **)** |
  48. +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  49. | :ref:`Texture2D<class_Texture2D>` | :ref:`get_item_icon<class_OptionButton_method_get_item_icon>` **(** :ref:`int<class_int>` idx **)** |const| |
  50. +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  51. | :ref:`int<class_int>` | :ref:`get_item_id<class_OptionButton_method_get_item_id>` **(** :ref:`int<class_int>` idx **)** |const| |
  52. +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  53. | :ref:`int<class_int>` | :ref:`get_item_index<class_OptionButton_method_get_item_index>` **(** :ref:`int<class_int>` id **)** |const| |
  54. +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  55. | :ref:`Variant<class_Variant>` | :ref:`get_item_metadata<class_OptionButton_method_get_item_metadata>` **(** :ref:`int<class_int>` idx **)** |const| |
  56. +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  57. | :ref:`String<class_String>` | :ref:`get_item_text<class_OptionButton_method_get_item_text>` **(** :ref:`int<class_int>` idx **)** |const| |
  58. +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  59. | :ref:`String<class_String>` | :ref:`get_item_tooltip<class_OptionButton_method_get_item_tooltip>` **(** :ref:`int<class_int>` idx **)** |const| |
  60. +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  61. | :ref:`PopupMenu<class_PopupMenu>` | :ref:`get_popup<class_OptionButton_method_get_popup>` **(** **)** |const| |
  62. +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  63. | :ref:`int<class_int>` | :ref:`get_selectable_item<class_OptionButton_method_get_selectable_item>` **(** :ref:`bool<class_bool>` from_last=false **)** |const| |
  64. +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  65. | :ref:`int<class_int>` | :ref:`get_selected_id<class_OptionButton_method_get_selected_id>` **(** **)** |const| |
  66. +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  67. | :ref:`Variant<class_Variant>` | :ref:`get_selected_metadata<class_OptionButton_method_get_selected_metadata>` **(** **)** |const| |
  68. +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  69. | :ref:`bool<class_bool>` | :ref:`has_selectable_items<class_OptionButton_method_has_selectable_items>` **(** **)** |const| |
  70. +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  71. | :ref:`bool<class_bool>` | :ref:`is_item_disabled<class_OptionButton_method_is_item_disabled>` **(** :ref:`int<class_int>` idx **)** |const| |
  72. +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  73. | :ref:`bool<class_bool>` | :ref:`is_item_separator<class_OptionButton_method_is_item_separator>` **(** :ref:`int<class_int>` idx **)** |const| |
  74. +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  75. | void | :ref:`remove_item<class_OptionButton_method_remove_item>` **(** :ref:`int<class_int>` idx **)** |
  76. +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  77. | void | :ref:`select<class_OptionButton_method_select>` **(** :ref:`int<class_int>` idx **)** |
  78. +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  79. | void | :ref:`set_item_disabled<class_OptionButton_method_set_item_disabled>` **(** :ref:`int<class_int>` idx, :ref:`bool<class_bool>` disabled **)** |
  80. +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  81. | void | :ref:`set_item_icon<class_OptionButton_method_set_item_icon>` **(** :ref:`int<class_int>` idx, :ref:`Texture2D<class_Texture2D>` texture **)** |
  82. +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  83. | void | :ref:`set_item_id<class_OptionButton_method_set_item_id>` **(** :ref:`int<class_int>` idx, :ref:`int<class_int>` id **)** |
  84. +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  85. | void | :ref:`set_item_metadata<class_OptionButton_method_set_item_metadata>` **(** :ref:`int<class_int>` idx, :ref:`Variant<class_Variant>` metadata **)** |
  86. +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  87. | void | :ref:`set_item_text<class_OptionButton_method_set_item_text>` **(** :ref:`int<class_int>` idx, :ref:`String<class_String>` text **)** |
  88. +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  89. | void | :ref:`set_item_tooltip<class_OptionButton_method_set_item_tooltip>` **(** :ref:`int<class_int>` idx, :ref:`String<class_String>` tooltip **)** |
  90. +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  91. | void | :ref:`show_popup<class_OptionButton_method_show_popup>` **(** **)** |
  92. +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  93. .. rst-class:: classref-reftable-group
  94. Theme Properties
  95. ----------------
  96. .. table::
  97. :widths: auto
  98. +-----------------------------------+------------------------------------------------------------------------------------------+-------------------------------------+
  99. | :ref:`Color<class_Color>` | :ref:`font_color<class_OptionButton_theme_color_font_color>` | ``Color(0.875, 0.875, 0.875, 1)`` |
  100. +-----------------------------------+------------------------------------------------------------------------------------------+-------------------------------------+
  101. | :ref:`Color<class_Color>` | :ref:`font_disabled_color<class_OptionButton_theme_color_font_disabled_color>` | ``Color(0.875, 0.875, 0.875, 0.5)`` |
  102. +-----------------------------------+------------------------------------------------------------------------------------------+-------------------------------------+
  103. | :ref:`Color<class_Color>` | :ref:`font_focus_color<class_OptionButton_theme_color_font_focus_color>` | ``Color(0.95, 0.95, 0.95, 1)`` |
  104. +-----------------------------------+------------------------------------------------------------------------------------------+-------------------------------------+
  105. | :ref:`Color<class_Color>` | :ref:`font_hover_color<class_OptionButton_theme_color_font_hover_color>` | ``Color(0.95, 0.95, 0.95, 1)`` |
  106. +-----------------------------------+------------------------------------------------------------------------------------------+-------------------------------------+
  107. | :ref:`Color<class_Color>` | :ref:`font_hover_pressed_color<class_OptionButton_theme_color_font_hover_pressed_color>` | ``Color(1, 1, 1, 1)`` |
  108. +-----------------------------------+------------------------------------------------------------------------------------------+-------------------------------------+
  109. | :ref:`Color<class_Color>` | :ref:`font_outline_color<class_OptionButton_theme_color_font_outline_color>` | ``Color(1, 1, 1, 1)`` |
  110. +-----------------------------------+------------------------------------------------------------------------------------------+-------------------------------------+
  111. | :ref:`Color<class_Color>` | :ref:`font_pressed_color<class_OptionButton_theme_color_font_pressed_color>` | ``Color(1, 1, 1, 1)`` |
  112. +-----------------------------------+------------------------------------------------------------------------------------------+-------------------------------------+
  113. | :ref:`int<class_int>` | :ref:`arrow_margin<class_OptionButton_theme_constant_arrow_margin>` | ``4`` |
  114. +-----------------------------------+------------------------------------------------------------------------------------------+-------------------------------------+
  115. | :ref:`int<class_int>` | :ref:`h_separation<class_OptionButton_theme_constant_h_separation>` | ``2`` |
  116. +-----------------------------------+------------------------------------------------------------------------------------------+-------------------------------------+
  117. | :ref:`int<class_int>` | :ref:`modulate_arrow<class_OptionButton_theme_constant_modulate_arrow>` | ``0`` |
  118. +-----------------------------------+------------------------------------------------------------------------------------------+-------------------------------------+
  119. | :ref:`int<class_int>` | :ref:`outline_size<class_OptionButton_theme_constant_outline_size>` | ``0`` |
  120. +-----------------------------------+------------------------------------------------------------------------------------------+-------------------------------------+
  121. | :ref:`Font<class_Font>` | :ref:`font<class_OptionButton_theme_font_font>` | |
  122. +-----------------------------------+------------------------------------------------------------------------------------------+-------------------------------------+
  123. | :ref:`int<class_int>` | :ref:`font_size<class_OptionButton_theme_font_size_font_size>` | |
  124. +-----------------------------------+------------------------------------------------------------------------------------------+-------------------------------------+
  125. | :ref:`Texture2D<class_Texture2D>` | :ref:`arrow<class_OptionButton_theme_icon_arrow>` | |
  126. +-----------------------------------+------------------------------------------------------------------------------------------+-------------------------------------+
  127. | :ref:`StyleBox<class_StyleBox>` | :ref:`disabled<class_OptionButton_theme_style_disabled>` | |
  128. +-----------------------------------+------------------------------------------------------------------------------------------+-------------------------------------+
  129. | :ref:`StyleBox<class_StyleBox>` | :ref:`disabled_mirrored<class_OptionButton_theme_style_disabled_mirrored>` | |
  130. +-----------------------------------+------------------------------------------------------------------------------------------+-------------------------------------+
  131. | :ref:`StyleBox<class_StyleBox>` | :ref:`focus<class_OptionButton_theme_style_focus>` | |
  132. +-----------------------------------+------------------------------------------------------------------------------------------+-------------------------------------+
  133. | :ref:`StyleBox<class_StyleBox>` | :ref:`hover<class_OptionButton_theme_style_hover>` | |
  134. +-----------------------------------+------------------------------------------------------------------------------------------+-------------------------------------+
  135. | :ref:`StyleBox<class_StyleBox>` | :ref:`hover_mirrored<class_OptionButton_theme_style_hover_mirrored>` | |
  136. +-----------------------------------+------------------------------------------------------------------------------------------+-------------------------------------+
  137. | :ref:`StyleBox<class_StyleBox>` | :ref:`normal<class_OptionButton_theme_style_normal>` | |
  138. +-----------------------------------+------------------------------------------------------------------------------------------+-------------------------------------+
  139. | :ref:`StyleBox<class_StyleBox>` | :ref:`normal_mirrored<class_OptionButton_theme_style_normal_mirrored>` | |
  140. +-----------------------------------+------------------------------------------------------------------------------------------+-------------------------------------+
  141. | :ref:`StyleBox<class_StyleBox>` | :ref:`pressed<class_OptionButton_theme_style_pressed>` | |
  142. +-----------------------------------+------------------------------------------------------------------------------------------+-------------------------------------+
  143. | :ref:`StyleBox<class_StyleBox>` | :ref:`pressed_mirrored<class_OptionButton_theme_style_pressed_mirrored>` | |
  144. +-----------------------------------+------------------------------------------------------------------------------------------+-------------------------------------+
  145. .. rst-class:: classref-section-separator
  146. ----
  147. .. rst-class:: classref-descriptions-group
  148. Signals
  149. -------
  150. .. _class_OptionButton_signal_item_focused:
  151. .. rst-class:: classref-signal
  152. **item_focused** **(** :ref:`int<class_int>` index **)**
  153. Emitted when the user navigates to an item using the :ref:`ProjectSettings.input/ui_up<class_ProjectSettings_property_input/ui_up>` or :ref:`ProjectSettings.input/ui_down<class_ProjectSettings_property_input/ui_down>` input actions. The index of the item selected is passed as argument.
  154. .. rst-class:: classref-item-separator
  155. ----
  156. .. _class_OptionButton_signal_item_selected:
  157. .. rst-class:: classref-signal
  158. **item_selected** **(** :ref:`int<class_int>` index **)**
  159. Emitted when the current item has been changed by the user. The index of the item selected is passed as argument.
  160. .. rst-class:: classref-section-separator
  161. ----
  162. .. rst-class:: classref-descriptions-group
  163. Property Descriptions
  164. ---------------------
  165. .. _class_OptionButton_property_fit_to_longest_item:
  166. .. rst-class:: classref-property
  167. :ref:`bool<class_bool>` **fit_to_longest_item** = ``true``
  168. .. rst-class:: classref-property-setget
  169. - void **set_fit_to_longest_item** **(** :ref:`bool<class_bool>` value **)**
  170. - :ref:`bool<class_bool>` **is_fit_to_longest_item** **(** **)**
  171. If ``true``, minimum size will be determined by the longest item's text, instead of the currently selected one's.
  172. \ **Note:** For performance reasons, the minimum size doesn't update immediately when adding, removing or modifying items.
  173. .. rst-class:: classref-item-separator
  174. ----
  175. .. _class_OptionButton_property_item_count:
  176. .. rst-class:: classref-property
  177. :ref:`int<class_int>` **item_count** = ``0``
  178. .. rst-class:: classref-property-setget
  179. - void **set_item_count** **(** :ref:`int<class_int>` value **)**
  180. - :ref:`int<class_int>` **get_item_count** **(** **)**
  181. The number of items to select from.
  182. .. rst-class:: classref-item-separator
  183. ----
  184. .. _class_OptionButton_property_selected:
  185. .. rst-class:: classref-property
  186. :ref:`int<class_int>` **selected** = ``-1``
  187. .. rst-class:: classref-property-setget
  188. - :ref:`int<class_int>` **get_selected** **(** **)**
  189. The index of the currently selected item, or ``-1`` if no item is selected.
  190. .. rst-class:: classref-section-separator
  191. ----
  192. .. rst-class:: classref-descriptions-group
  193. Method Descriptions
  194. -------------------
  195. .. _class_OptionButton_method_add_icon_item:
  196. .. rst-class:: classref-method
  197. void **add_icon_item** **(** :ref:`Texture2D<class_Texture2D>` texture, :ref:`String<class_String>` label, :ref:`int<class_int>` id=-1 **)**
  198. Adds an item, with a ``texture`` icon, text ``label`` and (optionally) ``id``. If no ``id`` is passed, the item index will be used as the item's ID. New items are appended at the end.
  199. .. rst-class:: classref-item-separator
  200. ----
  201. .. _class_OptionButton_method_add_item:
  202. .. rst-class:: classref-method
  203. void **add_item** **(** :ref:`String<class_String>` label, :ref:`int<class_int>` id=-1 **)**
  204. Adds an item, with text ``label`` and (optionally) ``id``. If no ``id`` is passed, the item index will be used as the item's ID. New items are appended at the end.
  205. .. rst-class:: classref-item-separator
  206. ----
  207. .. _class_OptionButton_method_add_separator:
  208. .. rst-class:: classref-method
  209. void **add_separator** **(** :ref:`String<class_String>` text="" **)**
  210. Adds a separator to the list of items. Separators help to group items, and can optionally be given a ``text`` header. A separator also gets an index assigned, and is appended at the end of the item list.
  211. .. rst-class:: classref-item-separator
  212. ----
  213. .. _class_OptionButton_method_clear:
  214. .. rst-class:: classref-method
  215. void **clear** **(** **)**
  216. Clears all the items in the **OptionButton**.
  217. .. rst-class:: classref-item-separator
  218. ----
  219. .. _class_OptionButton_method_get_item_icon:
  220. .. rst-class:: classref-method
  221. :ref:`Texture2D<class_Texture2D>` **get_item_icon** **(** :ref:`int<class_int>` idx **)** |const|
  222. Returns the icon of the item at index ``idx``.
  223. .. rst-class:: classref-item-separator
  224. ----
  225. .. _class_OptionButton_method_get_item_id:
  226. .. rst-class:: classref-method
  227. :ref:`int<class_int>` **get_item_id** **(** :ref:`int<class_int>` idx **)** |const|
  228. Returns the ID of the item at index ``idx``.
  229. .. rst-class:: classref-item-separator
  230. ----
  231. .. _class_OptionButton_method_get_item_index:
  232. .. rst-class:: classref-method
  233. :ref:`int<class_int>` **get_item_index** **(** :ref:`int<class_int>` id **)** |const|
  234. Returns the index of the item with the given ``id``.
  235. .. rst-class:: classref-item-separator
  236. ----
  237. .. _class_OptionButton_method_get_item_metadata:
  238. .. rst-class:: classref-method
  239. :ref:`Variant<class_Variant>` **get_item_metadata** **(** :ref:`int<class_int>` idx **)** |const|
  240. Retrieves the metadata of an item. Metadata may be any type and can be used to store extra information about an item, such as an external string ID.
  241. .. rst-class:: classref-item-separator
  242. ----
  243. .. _class_OptionButton_method_get_item_text:
  244. .. rst-class:: classref-method
  245. :ref:`String<class_String>` **get_item_text** **(** :ref:`int<class_int>` idx **)** |const|
  246. Returns the text of the item at index ``idx``.
  247. .. rst-class:: classref-item-separator
  248. ----
  249. .. _class_OptionButton_method_get_item_tooltip:
  250. .. rst-class:: classref-method
  251. :ref:`String<class_String>` **get_item_tooltip** **(** :ref:`int<class_int>` idx **)** |const|
  252. Returns the tooltip of the item at index ``idx``.
  253. .. rst-class:: classref-item-separator
  254. ----
  255. .. _class_OptionButton_method_get_popup:
  256. .. rst-class:: classref-method
  257. :ref:`PopupMenu<class_PopupMenu>` **get_popup** **(** **)** |const|
  258. Returns the :ref:`PopupMenu<class_PopupMenu>` contained in this button.
  259. \ **Warning:** This is a required internal node, removing and freeing it may cause a crash. If you wish to hide it or any of its children, use their :ref:`Window.visible<class_Window_property_visible>` property.
  260. .. rst-class:: classref-item-separator
  261. ----
  262. .. _class_OptionButton_method_get_selectable_item:
  263. .. rst-class:: classref-method
  264. :ref:`int<class_int>` **get_selectable_item** **(** :ref:`bool<class_bool>` from_last=false **)** |const|
  265. Returns the index of the first item which is not disabled, or marked as a separator. If ``from_last`` is ``true``, the items will be searched in reverse order.
  266. Returns ``-1`` if no item is found.
  267. .. rst-class:: classref-item-separator
  268. ----
  269. .. _class_OptionButton_method_get_selected_id:
  270. .. rst-class:: classref-method
  271. :ref:`int<class_int>` **get_selected_id** **(** **)** |const|
  272. Returns the ID of the selected item, or ``-1`` if no item is selected.
  273. .. rst-class:: classref-item-separator
  274. ----
  275. .. _class_OptionButton_method_get_selected_metadata:
  276. .. rst-class:: classref-method
  277. :ref:`Variant<class_Variant>` **get_selected_metadata** **(** **)** |const|
  278. Gets the metadata of the selected item. Metadata for items can be set using :ref:`set_item_metadata<class_OptionButton_method_set_item_metadata>`.
  279. .. rst-class:: classref-item-separator
  280. ----
  281. .. _class_OptionButton_method_has_selectable_items:
  282. .. rst-class:: classref-method
  283. :ref:`bool<class_bool>` **has_selectable_items** **(** **)** |const|
  284. Returns ``true`` if this button contains at least one item which is not disabled, or marked as a separator.
  285. .. rst-class:: classref-item-separator
  286. ----
  287. .. _class_OptionButton_method_is_item_disabled:
  288. .. rst-class:: classref-method
  289. :ref:`bool<class_bool>` **is_item_disabled** **(** :ref:`int<class_int>` idx **)** |const|
  290. Returns ``true`` if the item at index ``idx`` is disabled.
  291. .. rst-class:: classref-item-separator
  292. ----
  293. .. _class_OptionButton_method_is_item_separator:
  294. .. rst-class:: classref-method
  295. :ref:`bool<class_bool>` **is_item_separator** **(** :ref:`int<class_int>` idx **)** |const|
  296. Returns ``true`` if the item at index ``idx`` is marked as a separator.
  297. .. rst-class:: classref-item-separator
  298. ----
  299. .. _class_OptionButton_method_remove_item:
  300. .. rst-class:: classref-method
  301. void **remove_item** **(** :ref:`int<class_int>` idx **)**
  302. Removes the item at index ``idx``.
  303. .. rst-class:: classref-item-separator
  304. ----
  305. .. _class_OptionButton_method_select:
  306. .. rst-class:: classref-method
  307. void **select** **(** :ref:`int<class_int>` idx **)**
  308. Selects an item by index and makes it the current item. This will work even if the item is disabled.
  309. Passing ``-1`` as the index deselects any currently selected item.
  310. .. rst-class:: classref-item-separator
  311. ----
  312. .. _class_OptionButton_method_set_item_disabled:
  313. .. rst-class:: classref-method
  314. void **set_item_disabled** **(** :ref:`int<class_int>` idx, :ref:`bool<class_bool>` disabled **)**
  315. Sets whether the item at index ``idx`` is disabled.
  316. Disabled items are drawn differently in the dropdown and are not selectable by the user. If the current selected item is set as disabled, it will remain selected.
  317. .. rst-class:: classref-item-separator
  318. ----
  319. .. _class_OptionButton_method_set_item_icon:
  320. .. rst-class:: classref-method
  321. void **set_item_icon** **(** :ref:`int<class_int>` idx, :ref:`Texture2D<class_Texture2D>` texture **)**
  322. Sets the icon of the item at index ``idx``.
  323. .. rst-class:: classref-item-separator
  324. ----
  325. .. _class_OptionButton_method_set_item_id:
  326. .. rst-class:: classref-method
  327. void **set_item_id** **(** :ref:`int<class_int>` idx, :ref:`int<class_int>` id **)**
  328. Sets the ID of the item at index ``idx``.
  329. .. rst-class:: classref-item-separator
  330. ----
  331. .. _class_OptionButton_method_set_item_metadata:
  332. .. rst-class:: classref-method
  333. void **set_item_metadata** **(** :ref:`int<class_int>` idx, :ref:`Variant<class_Variant>` metadata **)**
  334. Sets the metadata of an item. Metadata may be of any type and can be used to store extra information about an item, such as an external string ID.
  335. .. rst-class:: classref-item-separator
  336. ----
  337. .. _class_OptionButton_method_set_item_text:
  338. .. rst-class:: classref-method
  339. void **set_item_text** **(** :ref:`int<class_int>` idx, :ref:`String<class_String>` text **)**
  340. Sets the text of the item at index ``idx``.
  341. .. rst-class:: classref-item-separator
  342. ----
  343. .. _class_OptionButton_method_set_item_tooltip:
  344. .. rst-class:: classref-method
  345. void **set_item_tooltip** **(** :ref:`int<class_int>` idx, :ref:`String<class_String>` tooltip **)**
  346. Sets the tooltip of the item at index ``idx``.
  347. .. rst-class:: classref-item-separator
  348. ----
  349. .. _class_OptionButton_method_show_popup:
  350. .. rst-class:: classref-method
  351. void **show_popup** **(** **)**
  352. Adjusts popup position and sizing for the **OptionButton**, then shows the :ref:`PopupMenu<class_PopupMenu>`. Prefer this over using ``get_popup().popup()``.
  353. .. rst-class:: classref-section-separator
  354. ----
  355. .. rst-class:: classref-descriptions-group
  356. Theme Property Descriptions
  357. ---------------------------
  358. .. _class_OptionButton_theme_color_font_color:
  359. .. rst-class:: classref-themeproperty
  360. :ref:`Color<class_Color>` **font_color** = ``Color(0.875, 0.875, 0.875, 1)``
  361. Default text :ref:`Color<class_Color>` of the **OptionButton**.
  362. .. rst-class:: classref-item-separator
  363. ----
  364. .. _class_OptionButton_theme_color_font_disabled_color:
  365. .. rst-class:: classref-themeproperty
  366. :ref:`Color<class_Color>` **font_disabled_color** = ``Color(0.875, 0.875, 0.875, 0.5)``
  367. Text :ref:`Color<class_Color>` used when the **OptionButton** is disabled.
  368. .. rst-class:: classref-item-separator
  369. ----
  370. .. _class_OptionButton_theme_color_font_focus_color:
  371. .. rst-class:: classref-themeproperty
  372. :ref:`Color<class_Color>` **font_focus_color** = ``Color(0.95, 0.95, 0.95, 1)``
  373. Text :ref:`Color<class_Color>` used when the **OptionButton** is focused. Only replaces the normal text color of the button. Disabled, hovered, and pressed states take precedence over this color.
  374. .. rst-class:: classref-item-separator
  375. ----
  376. .. _class_OptionButton_theme_color_font_hover_color:
  377. .. rst-class:: classref-themeproperty
  378. :ref:`Color<class_Color>` **font_hover_color** = ``Color(0.95, 0.95, 0.95, 1)``
  379. Text :ref:`Color<class_Color>` used when the **OptionButton** is being hovered.
  380. .. rst-class:: classref-item-separator
  381. ----
  382. .. _class_OptionButton_theme_color_font_hover_pressed_color:
  383. .. rst-class:: classref-themeproperty
  384. :ref:`Color<class_Color>` **font_hover_pressed_color** = ``Color(1, 1, 1, 1)``
  385. Text :ref:`Color<class_Color>` used when the **OptionButton** is being hovered and pressed.
  386. .. rst-class:: classref-item-separator
  387. ----
  388. .. _class_OptionButton_theme_color_font_outline_color:
  389. .. rst-class:: classref-themeproperty
  390. :ref:`Color<class_Color>` **font_outline_color** = ``Color(1, 1, 1, 1)``
  391. The tint of text outline of the **OptionButton**.
  392. .. rst-class:: classref-item-separator
  393. ----
  394. .. _class_OptionButton_theme_color_font_pressed_color:
  395. .. rst-class:: classref-themeproperty
  396. :ref:`Color<class_Color>` **font_pressed_color** = ``Color(1, 1, 1, 1)``
  397. Text :ref:`Color<class_Color>` used when the **OptionButton** is being pressed.
  398. .. rst-class:: classref-item-separator
  399. ----
  400. .. _class_OptionButton_theme_constant_arrow_margin:
  401. .. rst-class:: classref-themeproperty
  402. :ref:`int<class_int>` **arrow_margin** = ``4``
  403. The horizontal space between the arrow icon and the right edge of the button.
  404. .. rst-class:: classref-item-separator
  405. ----
  406. .. _class_OptionButton_theme_constant_h_separation:
  407. .. rst-class:: classref-themeproperty
  408. :ref:`int<class_int>` **h_separation** = ``2``
  409. The horizontal space between **OptionButton**'s icon and text. Negative values will be treated as ``0`` when used.
  410. .. rst-class:: classref-item-separator
  411. ----
  412. .. _class_OptionButton_theme_constant_modulate_arrow:
  413. .. rst-class:: classref-themeproperty
  414. :ref:`int<class_int>` **modulate_arrow** = ``0``
  415. If different than ``0``, the arrow icon will be modulated to the font color.
  416. .. rst-class:: classref-item-separator
  417. ----
  418. .. _class_OptionButton_theme_constant_outline_size:
  419. .. rst-class:: classref-themeproperty
  420. :ref:`int<class_int>` **outline_size** = ``0``
  421. The size of the text outline.
  422. \ **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_OptionButton_theme_constant_outline_size>` for outline rendering to look correct. Otherwise, the outline may appear to be cut off earlier than intended.
  423. .. rst-class:: classref-item-separator
  424. ----
  425. .. _class_OptionButton_theme_font_font:
  426. .. rst-class:: classref-themeproperty
  427. :ref:`Font<class_Font>` **font**
  428. :ref:`Font<class_Font>` of the **OptionButton**'s text.
  429. .. rst-class:: classref-item-separator
  430. ----
  431. .. _class_OptionButton_theme_font_size_font_size:
  432. .. rst-class:: classref-themeproperty
  433. :ref:`int<class_int>` **font_size**
  434. Font size of the **OptionButton**'s text.
  435. .. rst-class:: classref-item-separator
  436. ----
  437. .. _class_OptionButton_theme_icon_arrow:
  438. .. rst-class:: classref-themeproperty
  439. :ref:`Texture2D<class_Texture2D>` **arrow**
  440. The arrow icon to be drawn on the right end of the button.
  441. .. rst-class:: classref-item-separator
  442. ----
  443. .. _class_OptionButton_theme_style_disabled:
  444. .. rst-class:: classref-themeproperty
  445. :ref:`StyleBox<class_StyleBox>` **disabled**
  446. :ref:`StyleBox<class_StyleBox>` used when the **OptionButton** is disabled (for left-to-right layouts).
  447. .. rst-class:: classref-item-separator
  448. ----
  449. .. _class_OptionButton_theme_style_disabled_mirrored:
  450. .. rst-class:: classref-themeproperty
  451. :ref:`StyleBox<class_StyleBox>` **disabled_mirrored**
  452. :ref:`StyleBox<class_StyleBox>` used when the **OptionButton** is disabled (for right-to-left layouts).
  453. .. rst-class:: classref-item-separator
  454. ----
  455. .. _class_OptionButton_theme_style_focus:
  456. .. rst-class:: classref-themeproperty
  457. :ref:`StyleBox<class_StyleBox>` **focus**
  458. :ref:`StyleBox<class_StyleBox>` used when the **OptionButton** is focused. The ``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.
  459. .. rst-class:: classref-item-separator
  460. ----
  461. .. _class_OptionButton_theme_style_hover:
  462. .. rst-class:: classref-themeproperty
  463. :ref:`StyleBox<class_StyleBox>` **hover**
  464. :ref:`StyleBox<class_StyleBox>` used when the **OptionButton** is being hovered (for left-to-right layouts).
  465. .. rst-class:: classref-item-separator
  466. ----
  467. .. _class_OptionButton_theme_style_hover_mirrored:
  468. .. rst-class:: classref-themeproperty
  469. :ref:`StyleBox<class_StyleBox>` **hover_mirrored**
  470. :ref:`StyleBox<class_StyleBox>` used when the **OptionButton** is being hovered (for right-to-left layouts).
  471. .. rst-class:: classref-item-separator
  472. ----
  473. .. _class_OptionButton_theme_style_normal:
  474. .. rst-class:: classref-themeproperty
  475. :ref:`StyleBox<class_StyleBox>` **normal**
  476. Default :ref:`StyleBox<class_StyleBox>` for the **OptionButton** (for left-to-right layouts).
  477. .. rst-class:: classref-item-separator
  478. ----
  479. .. _class_OptionButton_theme_style_normal_mirrored:
  480. .. rst-class:: classref-themeproperty
  481. :ref:`StyleBox<class_StyleBox>` **normal_mirrored**
  482. Default :ref:`StyleBox<class_StyleBox>` for the **OptionButton** (for right-to-left layouts).
  483. .. rst-class:: classref-item-separator
  484. ----
  485. .. _class_OptionButton_theme_style_pressed:
  486. .. rst-class:: classref-themeproperty
  487. :ref:`StyleBox<class_StyleBox>` **pressed**
  488. :ref:`StyleBox<class_StyleBox>` used when the **OptionButton** is being pressed (for left-to-right layouts).
  489. .. rst-class:: classref-item-separator
  490. ----
  491. .. _class_OptionButton_theme_style_pressed_mirrored:
  492. .. rst-class:: classref-themeproperty
  493. :ref:`StyleBox<class_StyleBox>` **pressed_mirrored**
  494. :ref:`StyleBox<class_StyleBox>` used when the **OptionButton** is being pressed (for right-to-left layouts).
  495. .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
  496. .. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
  497. .. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
  498. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`
  499. .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)`
  500. .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)`