为什么KivyMD中调整theme_cls配置后界面颜色无法正常修改?
问题原因
你的主题配置不生效是代码中的几处基础错误导致的:
- 方法名拼写错误:KivyMD的App类入口方法是小写的
build,你写成了大写的Build,该方法不会被框架主动调用,你写的主题配置代码完全没有执行 - 返回值错误:
build方法需要返回你定义的根布局实例,你返回了数字0,框架无法加载你写的kv布局,自然不会应用对应样式 - kv文件属性拼写错误:
md_bc_color是无效属性,正确的按钮背景色属性是md_bg_color - 加载规则注意:需要保证kv文件命名符合Kivy自动加载规则,要么将kv文件命名为
my.kv(对应MyApp类去掉App后缀的小写形式)和py文件放在同一目录,要么手动调用Builder.load_file加载kv文件
修正后的Python代码
from kivymd.app import MDApp from kivymd.uix.boxlayout import MDBoxLayout class Ma(MDBoxLayout): pass class MyApp(MDApp): def build(self): self.theme_cls.primary_palette = "Amber" self.theme_cls.theme_style = "Dark" # 返回根布局实例 return Ma() MyApp().run()
修正后的kv代码(保存为my.kv,和py文件同目录)
<Ma>: MDRaisedButton: text: "Hello World" md_bg_color: app.theme_cls.primary_light pos_hint: {"center_x": 0.5, "center_y": 0.6} MDRectangleFlatButton: text: "Hello World" md_bg_color: app.theme_cls.primary_dark pos_hint: {"center_x": 0.5, "center_y": 0.4}
内容的提问来源于stack exchange,提问作者Andrés Rodriguez
相关产品推荐
相关产品推荐

