[英]KivyMD: AttributeError: 'NoneType' object has no attribute 'theme_cls'
[英]How to fix AttributeError: 'NoneType' object has no attribute 'theme_cls'
我正在嘗試Kivymd,但始終收到錯誤:AttributeError:'NoneType'對象沒有屬性'theme_cls'。
我在App類中添加了theme_cls = ThemeManager(),但仍然出現錯誤。 由於沒有更多的在線解決方案,請提供幫助。
from kivy.lang import Builder
from kivy.uix.screenmanager import ScreenManager, Screen, FadeTransition, WipeTransition
from kivy.app import App
from kivy.uix.button import Button
from kivymd.navigationdrawer import MDNavigationDrawer
from kivymd.theming import ThemeManager
class BeginScreen(Screen):
pass
class MyScreenManager(ScreenManager):
pass
Login = Builder.load_string('''
#: import Toolbar kivymd.toolbar.Toolbar
MyScreenManager:
Screen:
<Screen>:
Toolbar:
title: "Simple toolbar"
pos_hint: {'center_x': 0.5, 'center_y': 0.75}
md_bg_color: get_color_from_hex(colors['Teal']['500'])
background_palette: 'Teal'
background_hue: '500'
Toolbar:
title: "Toolbar with right buttons"
pos_hint: {'center_x': 0.5, 'center_y': 0.5}
md_bg_color: get_color_from_hex(colors['Amber']['700'])
background_palette: 'Amber'
background_hue: '700'
right_action_items: [['content-copy', lambda x: None]]
Toolbar:
title: "Toolbar with left and right buttons"
pos_hint: {'center_x': 0.5, 'center_y': 0.25}
md_bg_color: get_color_from_hex(colors['DeepPurple']['A400'])
background_palette: 'DeepPurple'
background_hue: 'A400'
left_action_items: [['arrow-left', lambda x: None]]
right_action_items: [['lock', lambda x: None], \
['camera', lambda x: None], \
['play', lambda x: None]]
''')
class MyApp(App):
theme_cls = ThemeManager()
def build(self):
return Login
if __name__ == "__main__":
MyApp().run()
當Kivy處理kv文件/字符串時,它會在theme_cls
實例化之前實例化根規則 MyScreenManager:
theme_cls
實例化MyScreenManager:
,將實例化其子Screen:
。 實例化Screen:
,實例化其子對象Toolbar:
引用theme_cls
。 但是theme_cls
尚未實例化。 因此,它引發了以下錯誤,
self._shadow = App.get_running_app().theme_cls.quad_shadow
AttributeError:“ NoneType”對象沒有屬性“ theme_cls”
MyScreenManager:
替換為類規則<MyScreenManager>:
Login = Builder.load_string('''
#:import Toolbar kivymd.toolbar.Toolbar
<MyScreenManager>:
Screen:
return MyScreenManager()
替換return Login
class MyApp(App):
theme_cls = ThemeManager()
def build(self):
return MyScreenManager()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.