KivyMD卸下扩展面板

时间:2020-10-18 20:21:42

标签: python kivy kivymd

我在寻找如何删除扩展面板时遇到麻烦,该面板内部包含带有IconLeftWidget的TwoLineAvatarListItem,下面是带有两个MDlabel文本的MDCard。我尝试使用self.root.ids.remove_widget(),但它没有做任何事情。我已经尝试了许多方法,但没有找到解决方案。这是代码,请随时查看。谢谢

kv。文件

<Content>:
    adaptive_height: True
    #size_hint: 1, None
    size_hint_y: None
    height: self.minimum_height
    orientation: 'vertical'

    TwoLineAvatarListItem:
        text: "Message"
        secondary_text: 'to: @gmail.com'
        IconLeftWidget:
            icon: 'email'


    MDCard:
        orientation: "vertical"
        padding: "8dp"
        size_hint: None, None
        size: "280dp", "180dp"
        pos_hint: {"center_x": .5, "center_y": .5}

        MDLabel:
            text: "Title"
            theme_text_color: "Secondary"
            size_hint_y: None
            height: self.texture_size[1]


        MDSeparator:
            height: "1dp"

        MDLabel:
            text: "Body"

ScreenManager:
    Screen:
        id: messages
        name: 'messages'
        BoxLayout:
            orientation: 'vertical'
            MDToolbar:
                title: "Messages Center"
                elevation:8
                MDIconButton:
                    icon: 'arrow-left'
                    on_press: screen_manager.current = "main_app_screen"
                    theme_text_color: 'Custom'
                    md_bg_color: app.theme_cls.primary_color
            ScrollView:
                GridLayout:
                    cols: 1
                    size_hint_y: None
                    height: self.minimum_height
                    id: box

.py python文件

class DemoApp(MDApp):
    def on_start(self):
        for i in range(10):
            panel = MDExpansionPanel(
                    icon=f"{images_path}folder.png",
                     content=Content(),
                    panel_cls=MDExpansionPanelTwoLine(
                        text='',
                        secondary_text=str(i) + ' email: xxxxx@gmail.com',))

            self.root.ids.box.add_widget(panel)

DemoApp().run()

1 个答案:

答案 0 :(得分:0)

<Content>:
    [...]


    MDCard:
        [...]

        MDRaisedButton:
            text: "REMOVE"
            on_release: app.remove(root)

        [...]



class DemoApp(MDApp):
    [...]

    def remove(self, content):
        self.root.ids.box.remove_widget(content.parent)