运行KivyMD入门HelloWorld示例报错:AttributeError: 'NoneType'无size属性
解决KivyMD Hello World示例的AttributeError: 'NoneType' object has no attribute 'size'错误
这个错误通常是因为KivyMD组件需要依赖App实例的主题配置,直接返回MDLabel作为根部件时,部分版本的KivyMD无法正确初始化组件的上下文环境。可以通过以下几种方式解决:
方案1:将MDLabel放入布局容器中
修改代码,用MDBoxLayout作为根容器,确保组件在正确的布局上下文中初始化:
from kivymd.app import MDApp from kivymd.uix.label import MDLabel from kivymd.uix.boxlayout import MDBoxLayout class MainApp(MDApp): def build(self): layout = MDBoxLayout(orientation='vertical') layout.add_widget(MDLabel(text="Hello, World", halign="center")) return layout MainApp().run()
方案2:显式初始化Theme类
在App类中提前初始化theme_cls,确保主题配置加载完成:
from kivymd.app import MDApp from kivymd.uix.label import MDLabel from kivymd.theming import ThemeManager class MainApp(MDApp): def __init__(self, **kwargs): self.theme_cls = ThemeManager() super().__init__(**kwargs) def build(self): return MDLabel(text="Hello, World", halign="center") MainApp().run()
方案3:检查版本兼容性
确保Kivy和KivyMD版本匹配,比如:
- Kivy 2.1.0 搭配 KivyMD 1.1.1
- Kivy 2.2.0 搭配 KivyMD 1.2.0
可以用pip重新安装指定版本:
pip install kivy==2.1.0 kivymd==1.1.1
内容的提问来源于stack exchange,提问作者johnny kennedy
相关产品推荐
相关产品推荐

