如何使用kivy将textinput转换为float并返回
Posted
技术标签:
【中文标题】如何使用kivy将textinput转换为float并返回【英文标题】:How to convert textinput to float and back with kivy 【发布时间】:2022-01-03 04:55:50 【问题描述】:我是 python 和 kivy 的新手。我正在尝试制作一个简单的计算器程序,但问题是使用 textinputs,我无法进行任何计算,并且 textinput 不会转换为我可以转换为浮点数的字符串,进行计算并将其转换回按下按钮时串起来并显示它。我尝试了很多方法,但似乎无法解决这个问题。任何建议如何做到这一点?也许比我目前尝试做的更简单?
我在 on_press 后收到此错误:
“第 47 行,在计算中
f_ROE = 浮动(s_ROE)
ValueError:无法将字符串转换为浮点数:'
这是我的代码:
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 values\nto get the intrinsic value of a stock\nbased 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__())
查看您尝试使用的该对象的属性。
【讨论】:
以上是关于如何使用kivy将textinput转换为float并返回的主要内容,如果未能解决你的问题,请参考以下文章
将 kivy 的 TextInput 限制为仅 ascii 字符
Python/Kivy:使用回车键将一个 TextInput 聚焦到另一个 TextInput
Kivy Textinput 未在 Windows 上检测到物理键盘
如何让 kivy Window.softinput_mode = 'below_target' 将 TextInput 框移动到虚拟键盘上方?