如何在特定位置读取代码中的Kivy.properties.NumericProperty值

时间:2018-08-17 11:05:30

标签: python-3.x kivy kivy-language

所以基本上我有一个kivy项目,其中有一个我在许多类中都使用过的布局。如此,我已经自定义了并将其放置在单独的文件中,因此我可以从不同的部分引用它我的代码。

摘要:

from kivy.uix.boxlayout import BoxLayout
from kivy.lang import Builder

Builder.load_string('''
<CustLayout>:
    #code here

''')

class CustLayout(BoxLayout):
    t_length = NumericProperty(0)
    my_len = 0
    print(my_len)

    def __init__(self, **kwargs):
        super(Silvertable,self).__init__(**kwargs)
        self.bind(t_length=self.on_t_length)
        #This statement is executed after all other prints
        print(self.t_length)

    def on_t_length(self,instance,length):
        #I'd like to get kv file value before the next line
        self.my_len = length
    print(my_len)

我的kiv文件:

#:import Silvertable silvertables.Silvertable

#chunk of code
BoxLayout:
    Silvertable:
        t_length: 5

在这里,我确实得到了值,但不幸的是为时已晚。也就是说,我在程序完成后才得到了值。my_len不会改变,它仍然是0

1 个答案:

答案 0 :(得分:1)

绑定基维属性

:h /\v :h /magic :h 'incsearch' 的值为0(零),因为在my_len方法之前首先执行了print()函数。

根据对run()属性的绑定,my_len的值确实从0更改为5。

请参阅示例并跟踪以获取详细信息。

示例

main.py

t_length

输出

Img01 - App startup: my_len=0 Img02 - on_t_length: my_len changed from 0 to 5 Img03 - on_stop: my_len=5