KivyMD开发:如何从Builder加载的kv代码中调用自定义函数
问题根源
kv 语言中self指代当前控件本身(此处即你定义的MDRectangleFlatButton按钮控件),而show_data是定义在应用类PrototypeChikis中的方法,不属于按钮控件本身,直接调用必然报错。
正确修改方法
你只需要修改helpers文件中loginButton字符串的on_press绑定逻辑即可,kv提供了内置关键字app指代当前运行的应用实例,直接用它调用方法就行:
loginButton = """ MDRectangleFlatButton: text: 'Log In' pos_hint: {'center_x':0.5, 'center_y':0.4} on_press: app.show_data(self) """
这里的self作为参数传入show_data方法,刚好匹配你方法定义里的obj形参,修改后点击按钮就能正常打印输入框的内容。
补充kv常用指代规则
你可以记一下kv里三个常用的作用域指代关键字,后续开发会经常用到:
self:指代当前定义的控件本身app:指代当前运行的应用实例,即你继承MDApp实现的类的实例root:指代当前kv规则对应的根控件
内容的提问来源于stack exchange,提问作者Rulo998
相关产品推荐
相关产品推荐

