Kivy Builder中MDFlatButton绑定自定义函数报AttributeError如何解决?
错误产生原因
你在KV代码中绑定按钮的on_release事件时,使用了self.plus_drive的写法,这里的self指向的是当前触发事件的MDFlatButton按钮控件本身。但plus_drive方法是定义在ransomwareScreen页面类中的,按钮对象自身没有这个方法,因此触发属性不存在的报错。
修复方法
1. 修正KV中的事件绑定逻辑
在页面规则(<ransomwareScreen>)定义的内部,root关键字指代当前页面的实例,也就是你定义了plus_drive方法的类对象,所以只需要修改按钮的绑定代码即可:
MDFlatButton: text : "salam" pos_hint: {"center_x": .9, "center_y": .1} on_release : root.plus_drive(self)
说明:这里加括号是为了主动触发方法调用,传入的self对应按钮实例,和你plus_drive方法定义中的obj参数匹配。
2. 清理冗余代码(可选,避免后续逻辑混乱)
你主逻辑中手动创建ScreenManager实例并添加页面的代码是完全冗余的,KV文件中已经定义了完整的ScreenManager和对应的三个页面实例,你build方法返回的也是KV加载的页面结构,这段手动创建sm的代码不会生效,直接删除即可。
内容的提问来源于stack exchange,提问作者mastermmz379
相关产品推荐
相关产品推荐

