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()
添加回答
舉報