KivyMD绑定left_action_items点击事件时报弱引用对象不存在错误
问题原因
报错是两个问题共同导致的:
- KV代码中给
left_action_items绑定回调时,你写的是lambda x : app.menu,仅返回了函数对象本身,没有执行函数调用。KivyMD处理工具栏按钮回调时会对传入的可调用对象做弱引用持有,没有正确触发执行的函数对象会被提前回收,就会触发弱引用失效的报错。 - Python代码里
menu方法末尾多了无效的**strong text**语法片段,干扰了函数对象的正常引用。
修复方案
- 将KV里的lambda表达式修改为实际执行函数调用的写法:
lambda x: app.menu() - 删除Python代码中
menu方法末尾多余的无效内容
修复后完整可运行代码
from kivymd.app import MDApp from kivy.lang import Builder KV = ''' Screen: NavigationLayout: ScreenManager: Screen: BoxLayout: orientation:"vertical" MDToolbar: title:"Tool" left_action_items : [["menu", lambda x : app.menu()]] MDLabel: text: "App" ''' class GoodApp(MDApp): def build(self): builder = Builder.load_string(KV) return builder def menu(self): print("menu") GoodApp().run()
内容的提问来源于stack exchange,提问作者Destine Joe
相关产品推荐
相关产品推荐

