从Kivy MD扩展面板的example开始,我想自定义面板的内容。该示例显示每个扩展面板的相同内容。我想设置“文本”和“辅助文本”字段的值。所以我修改了代码如下:
from kivy.lang import Builder
from kivymd.uix.boxlayout import MDBoxLayout
from kivymd.app import MDApp
from kivymd import images_path
from kivymd.uix.expansionpanel import MDExpansionPanel, MDExpansionPanelThreeLine
from kivymd.uix.list import TwoLineIconListItem
KV = '''
MDScreen:
MDBoxLayout:
orientation: "vertical"
MDTopAppBar:
title: "Expansion panel"
elevation: 10
ScrollView:
MDGridLayout:
cols: 1
adaptive_height: True
id: box
'''
class Content(MDBoxLayout, TwoLineIconListItem):
def __init__(self, primaryText, secondaryText):
self.size_hint_y = None
self.height = self.minimum_height
self.text = primaryText
self.secondary_text = secondaryText
class Test(MDApp):
def build(self):
return Builder.load_string(KV)
def on_start(self):
for i in range(10):
myContent = Content('PRIMARY ' + str(i), 'SECONDARY ' + str(i))
self.root.ids.box.add_widget(
MDExpansionPanel(
icon="language-python",
content=myContent,
panel_cls=MDExpansionPanelThreeLine(
text="Text " + str(i),
secondary_text="Secondary text " + str(i),
tertiary_text="Tertiary text " + str(i),
)
)
)
Test().run()
出乎意料的是,我收到此错误:AttributeError:'Content'对象没有属性'disabled_count'.
在第二个版本中,我没有再出现这个错误,但是没有显示内容:
from kivy.lang import Builder
from kivymd.uix.boxlayout import MDBoxLayout
from kivymd.app import MDApp
from kivymd import images_path
from kivymd.uix.expansionpanel import MDExpansionPanel, MDExpansionPanelThreeLine
from kivymd.uix.list import TwoLineIconListItem
KV = '''
<Content>
size_hint_y: None
height: self.minimum_height
TwoLineIconListItem:
MDScreen:
MDBoxLayout:
orientation: "vertical"
MDTopAppBar:
title: "Expansion panel"
elevation: 10
ScrollView:
MDGridLayout:
cols: 1
adaptive_height: True
id: box
'''
class Content(MDBoxLayout):
pass
class Test(MDApp):
def build(self):
return Builder.load_string(KV)
def on_start(self):
for i in range(10):
myContent = Content()
myContent.text = 'PRIMARY ' + str(i)
myContent.secondary_text = 'SECONDARY ' + str(i)
self.root.ids.box.add_widget(
MDExpansionPanel(
icon="language-python",
content=myContent,
panel_cls=MDExpansionPanelThreeLine(
text="Text " + str(i),
secondary_text="Secondary text " + str(i),
tertiary_text="Tertiary text " + str(i),
)
)
)
Test().run()