1 回答
TA贡献1826条经验 获得超6个赞
ConfigParserProperty 设置构建后发生的事情,因此遗憾的是,您不能依赖可用的配置中的值,build甚至on_start不能在那之后尽快更新它,但它之前不会发生。
因此,您有两种选择,要么将操作延迟固定的时间(使用 Clock.schedule_once),然后在被调用函数中执行您想要对值执行的任何操作,或者(更好)将函数绑定到您要执行的属性感兴趣,因此每次值更改时都会调用它,这可能正是您想要的,因为您需要根据该值刷新界面。
KV = '''
BoxLayout:
TextInput:
id: number
text: str(app.number)
on_text: app.number = self.text
Label:
id: info
number: number.text
text: 'Number: {}'.format(self.number)
'''
class InfoApp(App):
def build_config(self, config):
config.setdefaults(
'info',
{
'number': ''
}
)
number = ConfigParserProperty(0, 'info', 'number', 'app',val_type=int)
def build(self):
self.bind(number=self.do_something)
return Builder.load_string(KV)
def do_something(self, *args):
print(self.number)
if __name__ == '__main__':
InfoApp().run()
添加回答
举报