Inheritance #

SpinBox
Table of contents

SpinBox #

is_instantiable, Node, core, not_builtin_classes

An input field for numbers.

SpinBox is a numerical input text field. It allows entering integers and floating-point numbers.

Example: Create a SpinBox, disable its context menu and set its text alignment to right.

GDScript

var spin_box = SpinBox.new()
add_child(spin_box)
var line_edit = spin_box.get_line_edit()
line_edit.context_menu_enabled = false
spin_box.horizontal_alignment = LineEdit.HORIZONTAL_ALIGNMENT_RIGHT

C#

var spinBox = new SpinBox();
AddChild(spinBox);
var lineEdit = spinBox.GetLineEdit();
lineEdit.ContextMenuEnabled = false;
spinBox.AlignHorizontal = LineEdit.HorizontalAlignEnum.Right;

See Range class for more options over the SpinBox.

Note: With the SpinBox's context menu disabled, you can right-click the bottom half of the spinbox to set the value to its minimum, while right-clicking the top half sets the value to its maximum.

Note: SpinBox relies on an underlying LineEdit node. To theme a SpinBox's background, add theme items for LineEdit and customize them. The LineEdit has the SpinBoxInnerLineEdit theme variation, so that you can give it a distinct appearance from regular LineEdits.

Note: If you want to implement drag and drop for the underlying LineEdit, you can use Control.set_drag_forwarding on the node returned by get_line_edit.

Members #

var alignment: int = 0#

Changes the alignment of the underlying LineEdit.

var custom_arrow_step: float = 0.0#

If not 0, Range.value will always be rounded to a multiple of custom_arrow_step when interacting with the arrow buttons of the SpinBox.

var editable: bool = true#

If true, the SpinBox will be editable. Otherwise, it will be read only.

var prefix: String = ""#

Adds the specified prefix string before the numerical value of the SpinBox.

var select_all_on_focus: bool = false#

If true, the SpinBox will select the whole text when the LineEdit gains focus. Clicking the up and down arrows won't trigger this behavior.

var size_flags_vertical = SIZE_FILL#

var step: float = 1.0#

var suffix: String = ""#

Adds the specified suffix string after the numerical value of the SpinBox.

var update_on_text_changed: bool = false#

Sets the value of the Range for this SpinBox when the LineEdit text is changed instead of submitted. See LineEdit.text_changed and LineEdit.text_submitted.

Methods #

func apply() -> void#

Applies the current value of this SpinBox.

func get_line_edit() -> LineEdit#

Returns the LineEdit instance from this SpinBox. You can use it to access properties and methods of LineEdit.

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 CanvasItem.visible property.

Annotations #

Constants #

Constructors #

Enums #

Operators #

Signals #

Theme Items #

self["theme_override_colors/down_disabled_icon_modulate"] = Color(0.875, 0.875, 0.875, 0.5) as Color#

Down button icon modulation color, when the button is disabled.

self["theme_override_colors/down_hover_icon_modulate"] = Color(0.95, 0.95, 0.95, 1) as Color#

Down button icon modulation color, when the button is hovered.

self["theme_override_colors/down_icon_modulate"] = Color(0.875, 0.875, 0.875, 1) as Color#

Down button icon modulation color.

self["theme_override_colors/down_pressed_icon_modulate"] = Color(0.95, 0.95, 0.95, 1) as Color#

Down button icon modulation color, when the button is being pressed.

self["theme_override_colors/up_disabled_icon_modulate"] = Color(0.875, 0.875, 0.875, 0.5) as Color#

Up button icon modulation color, when the button is disabled.

self["theme_override_colors/up_hover_icon_modulate"] = Color(0.95, 0.95, 0.95, 1) as Color#

Up button icon modulation color, when the button is hovered.

self["theme_override_colors/up_icon_modulate"] = Color(0.875, 0.875, 0.875, 1) as Color#

Up button icon modulation color.

self["theme_override_colors/up_pressed_icon_modulate"] = Color(0.95, 0.95, 0.95, 1) as Color#

Up button icon modulation color, when the button is being pressed.

self["theme_override_constants/buttons_vertical_separation"] = 0 as int#

Vertical separation between the up and down buttons.

self["theme_override_constants/buttons_width"] = 16 as int#

Width of the up and down buttons. If smaller than any icon set on the buttons, the respective icon may overlap neighboring elements. If smaller than 0, the width is automatically adjusted from the icon size.

self["theme_override_constants/field_and_buttons_separation"] = 2 as int#

Width of the horizontal separation between the text input field (LineEdit) and the buttons.

self["theme_override_constants/set_min_buttons_width_from_icons"] = 1 as int#

If not 0, the minimum button width corresponds to the widest of all icons set on those buttons, even if buttons_width is smaller.

self["theme_override_icons/down"] = icon as Texture2D#

Down button icon, displayed in the middle of the down (value-decreasing) button.

self["theme_override_icons/down_disabled"] = icon as Texture2D#

Down button icon when the button is disabled.

self["theme_override_icons/down_hover"] = icon as Texture2D#

Down button icon when the button is hovered.

self["theme_override_icons/down_pressed"] = icon as Texture2D#

Down button icon when the button is being pressed.

self["theme_override_icons/up"] = icon as Texture2D#

Up button icon, displayed in the middle of the up (value-increasing) button.

self["theme_override_icons/up_disabled"] = icon as Texture2D#

Up button icon when the button is disabled.

self["theme_override_icons/up_hover"] = icon as Texture2D#

Up button icon when the button is hovered.

self["theme_override_icons/up_pressed"] = icon as Texture2D#

Up button icon when the button is being pressed.

self["theme_override_icons/updown"] = icon as Texture2D#

Single texture representing both the up and down buttons icons. It is displayed in the middle of the buttons and does not change upon interaction. It is recommended to use individual up and down graphics for better usability. This can also be used as additional decoration between the two buttons.

self["theme_override_styles/down_background"] = style as StyleBox#

Background style of the down button.

self["theme_override_styles/down_background_disabled"] = style as StyleBox#

Background style of the down button when disabled.

self["theme_override_styles/down_background_hovered"] = style as StyleBox#

Background style of the down button when hovered.

self["theme_override_styles/down_background_pressed"] = style as StyleBox#

Background style of the down button when being pressed.

self["theme_override_styles/field_and_buttons_separator"] = style as StyleBox#

StyleBox drawn in the space occupied by the separation between the input field and the buttons.

self["theme_override_styles/up_background"] = style as StyleBox#

Background style of the up button.

self["theme_override_styles/up_background_disabled"] = style as StyleBox#

Background style of the up button when disabled.

self["theme_override_styles/up_background_hovered"] = style as StyleBox#

Background style of the up button when hovered.

self["theme_override_styles/up_background_pressed"] = style as StyleBox#

Background style of the up button when being pressed.

self["theme_override_styles/up_down_buttons_separator"] = style as StyleBox#

StyleBox drawn in the space occupied by the separation between the up and down buttons.

Tutorials #