1 回答

TA貢獻(xiàn)1826條經(jīng)驗(yàn) 獲得超6個(gè)贊
ConfigParserProperty 設(shè)置構(gòu)建后發(fā)生的事情,因此遺憾的是,您不能依賴可用的配置中的值,build甚至on_start不能在那之后盡快更新它,但它之前不會(huì)發(fā)生。
因此,您有兩種選擇,要么將操作延遲固定的時(shí)間(使用 Clock.schedule_once),然后在被調(diào)用函數(shù)中執(zhí)行您想要對(duì)值執(zhí)行的任何操作,或者(更好)將函數(shù)綁定到您要執(zhí)行的屬性感興趣,因此每次值更改時(shí)都會(huì)調(diào)用它,這可能正是您想要的,因?yàn)槟枰鶕?jù)該值刷新界面。
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()
添加回答
舉報(bào)