KivyMD AttributeError: Content/TwoLineIconListItem 对象没有属性 '_disabled_count'

问题描述 投票:0回答:0

从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()
python kivy kivy-language kivymd
© www.soinside.com 2019 - 2024. All rights reserved.