How to take float inputs from users inside SpinBox?

:information_source: Attention Topic was automatically imported from the old Question2Answer platform.
:bust_in_silhouette: Asked By rolify

I want to take float inputs from users through keyboard. I used SpinBox but it rounds the input value. Also if using SpinBox how to get rid of increment and decrement buttons and how to custom style its text.

:bust_in_silhouette: Reply From: sash-rc

SpinBox-es are best used for a quick (coarse) input. For your task, it seems easier to just slightly customize plain LineEdit.

extends LineEdit

var value : float = 0.0 # export as needed

func _ready() -> void:
  connect("text_changed", self, "_on_LineEdit_text_changed")

func _on_LineEdit_text_changed(new_text: String) -> void: # "text_changed" signal handler
  if new_text.is_valid_float():
    value = float(new_text)
  else: # optional rollback to last good one
    self.text = str(value)

Just notice, floats have natural precision limits

:bust_in_silhouette: Reply From: idbrii

You can turn off rounding of the SpinBox:

    var spin := SpinBox.new()
    spin.step = -1
    spin.rounded = false
    spin.value = 100 # set initial value
    print(spin.value) # get number values

But sash-rc’s answer is probably more what you want.