如何在Kivy中使用NumericProperty()?

时间:2015-09-28 01:33:32

标签: python kivy

我试图从.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;但我认为他们没有做任何事情。有没有人知道如果用户输入非数字值,如何设置一个漂亮的错误处理程序?

3 个答案:

答案 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 *