我试图从.kv文件中获取一个值到Python文件,如下所示:
的Python:
class Calc(Widget):
def func(self):
alp = NumericProperty()
bet = NumericProperty()
some calculation ... alp + bet
Kivy:
<Calc>
alp: alpha.text
bet: beta.text
TextInput:
id: alpha
TextInput:
id: beta
我尝试过不同的东西(例如将字符串转换为float,int等)似乎没什么用。我尝试使用&#34; alp:alpha&#34;,这似乎也不起作用。
我做错了什么?
谢谢!
修订版1
的Python:
class Calc(Widget):
alp = NumericProperty()
bet = NumericProperty()
def func(self):
some calculation ... alp + bet
Kivy:
<Calc>
alp: alpha.text
bet: beta.text
TextInput:
id: alpha
TextInput:
id: beta
所以,它仍然没有用 - 因为例如alpha.text将字符串返回给alp = NumericProperty()。据我所知,&#34; .text&#34;是唯一返回InputLabel内容的属性。有任何想法吗?谢谢。
修订版2
似乎我已经通过使用ObjectProperty()解决了这个问题。
的Python:
class Calc(Widget):
def func(self):
alp = ObjectProperty('float')
bet = ObjectProperty('float')
some calculation ... alp + bet
我还应用过滤器&#39; float&#39;但我认为他们没有做任何事情。有没有人知道如果用户输入非数字值,如何设置一个漂亮的错误处理程序?
答案 0 :(得分:2)
Kivy属性必须在类级别声明。查看本教程的这一部分:http://kivy.org/docs/gettingstarted/properties.html
这意味着你应该有像
这样的东西class Calc(Widget):
alp = NumericProperty()
bet = NumericProperty()
def func(self):
some calculation ... alp + bet
答案 1 :(得分:1)
如果您的目的是从Text_Input获取输入并将其添加并在此处显示结果,则可能会有所帮助。
class Calc(Widget):
alp = ObjectProperty()
bet = ObjectProperty()
def func(self):
#some calculation ... alp + bet
add = int(self.alp.text)+int(self.bet.text)
#print add to cmd prompt
print(add)
这可能有帮助:)
答案 2 :(得分:0)
使用此:
from kivy.properties import *