KivyMD点击MDTopAppBar菜单报错:name 'navigation_draw' is not defined
解决KivyMD工具栏菜单按钮触发NameError问题
问题原因
报错NameError: name 'navigation_draw' is not defined是因为在kv字符串中,lambda函数无法直接访问MobileApp类里的navigation_draw方法。在Kivy的kv语言中,需要通过app关键字来引用当前应用实例的方法。
修正方案
将kv字符串中left_action_items里的lambda x: navigation_draw()改为lambda x: app.navigation_draw()即可解决问题。
修正后的完整代码
from kivymd.app import MDApp from kivy.lang import Builder from kivy.core.window import Window Window.size=(700,700) screen_helper =""" Screen: BoxLayout: orientation:'vertical' MDTopAppBar: title:'My First App' left_action_items:[['menu',lambda x: app.navigation_draw()]] MDLabel: text:'hello App' halign:'center' """ class MobileApp(MDApp): def build(self): screen = Builder.load_string(screen_helper) return screen def navigation_draw(self): print("Navigation") MobileApp().run()
内容的提问来源于stack exchange,提问作者data science
相关产品推荐
相关产品推荐

