Kivy,как из textInput получить число

здравствуйте, есть во такой код:

from kivy.app import App
from kivy.properties import StringProperty
from kivy.uix.textinput import TextInput
from kivy.uix.label import Label
import kivy.uix.button
from kivy.uix.floatlayout import FloatLayout



class contair (FloatLayout):
    pass


class app(App):
    text = StringProperty('decision')

    def build(self):
        return contair()

    def a(self):
        a = self.root.ids.inputa.text
        print(a)

    def b(self):
        b = self.root.ids.inputb.text
        print(b)

    def c(self):
        c = self.root.ids.inputc.text
        print(c)

    def yarik(self):
        D = self.b ** 2 - 4 * self.a * self.c
        print(D)


if __name__ == '__main__':
    app = app()
    app.run()

и вот такой kv файл:

<contair>:


    Button:
        size_hint: 1,0.4
        pos_hint: {'center_x': 0.5, 'center_y': 0.6}
        text: 'solve'
        on_press: app.yarik()


    TextInput:

        size_hint: 0.15,0.07
        pos_hint: {'center_x': 0.15, 'top': 0.9}
        hint_text: 'a'
        on_text: app.a()
        id: inputa
        input_filter: 'float'

    TextInput:
        size_hint: 0.15,0.07
        pos_hint: {'center_x': 0.5, 'top': 0.9}
        hint_text: 'b'
        on_text: app.b()
        id: inputb
        input_filter: 'float'

    TextInput:
        size_hint: 0.15,0.07
        pos_hint: {'center_x': 0.8, 'top': 0.9}
        hint_text: 'c'
        on_text: app.c()
        id: inputc
        input_filter: 'float'


    Label:
        size_hint: 0.15,0.07
        pos_hint: {'center_x': 0.32, 'top': 0.9}
        text:'x**2  +'

    Label:
        size_hint: 0.15,0.07
        pos_hint: {'center_x': 0.65, 'top': 0.9}
        text:'x  +'

    Label:
        size_hint: 1, 0.3
        pos_hint: {'center_x': 0.5, 'center_y': 0.2}
        text: app.text

я хочу чтобы при нажатии на кнопку высчитывался D, но строка из textinput не хочет преобразовывается в число
пробовал вот так:

def a(self):
        a = float(self.root.ids.inputa.text)
        print(a)

    def b(self):
        b = float(self.root.ids.inputb.text)
        print(b)

    def c(self):
        c = float(self.root.ids.inputc.text)
        print(c)

А что происходит? Что в self.root.ids.inputa.text?

from kivy.app import App
from kivy.properties import StringProperty
from kivy.uix.textinput import TextInput
from kivy.uix.label import Label
from kivy.uix.button import Button
from kivy.uix.floatlayout import FloatLayout



class contair (FloatLayout):
    pass


class app(App):
    text = StringProperty('decision')

    def build(self):
        return contair()

    def a(self):
        a = self.root.ids.inputa.text
        #print(a)
        return a

    def b(self):
        b = self.root.ids.inputb.text
        #print(b)
        return b

    def c(self):
        c = self.root.ids.inputc.text
        #print(c)
        return c
    def yarik(self):
        D = float(self.b())** 2 - 4 *float(self.a())*float(self.c())
        print(D)
        

if __name__ == '__main__':
    app = app()
    app.run()