You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 06:09:58