首页 > 解决方案 > ValueError: KivyMD: App 对象必须继承自`kivymd.app.MDApp`

问题描述

出于某种原因,我无法让 MDTextField 工作。我觉得它很简单,但我似乎无法弄清楚。有任何想法吗?

import kivymd
from kivy.app import App
from kivymd.app import MDApp
from kivy.uix.floatlayout import FloatLayout
from kivymd.theming import ThemeManager
from kivymd.uix.textfield import MDTextField


class MainApp(MDApp):

    theme_cls = ThemeManager()
    theme_cls.primary_palette = "Blue"
    theme_cls.theme_style = "Dark"

MainApp().run()

'千伏'

#:import MDTextField kivymd.uix.textfield.MDTextField

FloatLayout:
    size_hint: .8, .8
    pos_hint: {"center_x": .5, "center_y": .5}
    spacing: dp(100)
    orientation: 'vertical'

    MDTextField:

标签: pythonpython-3.xkivy

解决方案


所以显然我的问题不在于文本字段,而是主题管理器。所以而不是

import kivymd
from kivy.app import App
from kivymd.app import MDApp
from kivy.uix.floatlayout import FloatLayout
from kivymd.theming import ThemeManager
from kivymd.uix.textfield import MDTextField


class MainApp(MDApp):

    theme_cls = ThemeManager()
    theme_cls.primary_palette = "Blue"
    theme_cls.theme_style = "Dark"

MainApp().run()

我应该使用

import kivymd
from kivy.app import App
from kivymd.app import MDApp
from kivy.uix.floatlayout import FloatLayout
from kivymd.uix.textfield import MDTextField


class MainApp(MDApp):
    def __init__(self, **kwargs):
        self.title = "BMI"
        self.theme_cls.theme_style = "Dark"
        self.theme_cls.primary_palette = "Blue"
        super().__init__(**kwargs)

MainApp().run()

推荐阅读