Как преобразовать textinput в float и обратно с помощью kivy

#python #kivy #textinput

Вопрос:

Я новичок в python и киви. Я пытаюсь создать простую программу-калькулятор, но проблема в том, что с textinputs я не могу выполнять какие-либо вычисления, и textinput не преобразуется в строку, которую я мог бы затем преобразовать в float, выполнить вычисления и преобразовать ее обратно в строку и показать ее при нажатии кнопки. Я пытался сделать это довольно многими способами, но, похоже, не могу обойти эту проблему. Есть какие-нибудь предложения, как это сделать? И, может быть, более простой способ, чем то, что я сейчас пытаюсь сделать?

Я получаю эту ошибку после on_press: «строка 47 в поле вычислить значение f_ROE = float(s_ROE) Ошибка: не удалось преобразовать строку в float: ‘Объект TextInput по адресу 0x000002D874407C80gt;’

Вот мой код:

 from kivy.app import App from kivy.uix.boxlayout import BoxLayout from kivy.uix.button import Button from kivy.uix.label import Label from kivy.uix.textinput import TextInput from kivy.core.window import Window   class Stonks(App):  def build(self):  layout = BoxLayout(orientation="vertical", spacing = 10, padding = 40)   Instruction = Label(text = "Stock value calculator. Input valuesnto get the intrinsic value of a stocknbased on price to book value. Best nused for value stocks.", bold = True, font_size = "20sp", )   ROE_Label = Label(text = "What is company ROE?")  self.ROE_input = TextInput(multiline = False)   Growth_Label = Label(text = "What is company growth rate per annum?")  self.Growth_input = TextInput(multiline = False)   Rorr_Label = Label(text = "What is you rate of required return %?")  self.Rorr_input = TextInput(multiline = False)   self.Stock_Value = Button(text = "Stock value €", on_press = self.calculate)  self.Stock_Value_2 = Label (text = "")   layout.add_widget(Instruction)  layout.add_widget(ROE_Label)  layout.add_widget(self.ROE_input)  layout.add_widget(Growth_Label)  layout.add_widget(self.Growth_input)  layout.add_widget(Rorr_Label)  layout.add_widget(self.Rorr_input)  layout.add_widget(self.Stock_Value)  layout.add_widget(self.Stock_Value_2)  return layout   def calculate(self, instance):  ROE = self.ROE_input  Growth = self.Growth_input  Rorr = self.Rorr_input   s_ROE = str(ROE)  s_Growth = str(Growth)  s_Rorr = str(Rorr)   f_ROE = float(s_ROE)  f_Growth = float(s_Growth)  f_Rorr = float(s_Rorr)  f_value = ((f_ROE) - (f_Growth)) / ((f_Rorr - f_Growth))   string_value = str(f_value)   self.Stock_Value_2.text = string_value   Stonks().run()  

Ответ №1:

из журнала ошибок следует, что вы передаете экземпляр объекта вместо ожидаемого.

пытаться:

 print(dir(self.ROE_input))  

или

 print(self.ROE_input.__dir__())  

чтобы посмотреть, какой атрибут этого объекта вы пытаетесь использовать.