#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__())
чтобы посмотреть, какой атрибут этого объекта вы пытаетесь использовать.