如何构建嵌套小部件(例如 MDCard,其中包含其他小部件)?

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

我是编码新手。我非常感谢对此的帮助。我已经尝试了很多方法,并在互联网上寻求帮助。我根据其他人的问题/解决方案尝试了很多东西,但对我的需要没有任何帮助。拜托,我正绞尽脑汁地想弄清楚这一点。

我正在构建一个应用程序,它应该从数据库表中获取条目并使用该数据库条目中的字段填充MDCard。我正在逐步构建该功能,但现在我只能构建 MDCard。

这是我想要构建的核心,但我想从 python 函数执行它。以猕猴桃为例:

<ViewScreen>:
    name:'View'

    card_list:card_list

    MDBoxLayout:
        orientation:'vertical'

        ScrollView:
            size:self.size

            GridLayout:
                id: card_list
                size_hint_y:None
                height:self.minimum_height
                width:self.minimum_width
                cols:1
                spacing:'20dp'
                padding:'20dp'
                

                MDCard:

                    orientation:'horizontal'
                    padding:'2dp'
                    size_hint:1,None
                    height:'140dp'

                    MDGridLayout:
                        rows:1
                        cols:3

                        MDGridLayout:
                            rows:4
                            cols:1

                            MDLabel:
                                text:"Task Title"
                            MDLabel:
                                text:"Task Description"
                            MDLabel:
                                text:"Budget"
                            MDLabel:
                                text:""

                        MDGridLayout:
                            rows:4
                            cols:1

                            MDLabel:
                                text:""
                            MDLabel:
                                text:""
                            MDLabel:
                                text:"Date Required"
                            MDLabel:
                                text:""

                        MDGridLayout:
                            rows:2
                            cols:1

                            MDIconButton:
                                icon:"bookmark-outline"

                            MDIconButton:
                                icon:"offer"

        Button:
            size_hint: (None, None)
            size:"60dp","30dp"
            pos_hint: {"center_x": 0.5,"center_y": 0.05 }
            background_color: (1, 1, 1, 0)
            text: "Refresh"
            color:(0, 0, 0, 0.5)
            on_release:
                root.build_card()

要将 MDcard 注入 ScrollView,我尝试过:

class Task_Card(MDCard):
    def __init__(self,**kwargs):
        super(Task_Card,self).__init__(**kwargs)
        self.orientation="horizontal"
        self.padding="2dp"
        self.size_hint=(1,None)
        self.height='140dp'

        self.inside=MDGridLayout()
        self.inside.rows=4
        self.inside.cols=1

        self.inside.add_widget(MDLabel(text='Press'))

class ViewScreen(MDScreen,Task_Card):
    
    def build_card(self):

        for i in range(5):
    
            self.ids.card_list.add_widget(self.Task_Card)

我收到此错误:

回溯(最近一次调用最后一次): 文件“.\main.py”,第 144 行,位于 类 ViewScreen(MDScreen,Task_Card): 类型错误:无法创建一致的方法解析 基础布局、BackgroundColorBehavior 的顺序(MRO)

python kivy kivymd
1个回答
0
投票

该错误是由于您的

ViewScreen
类同时扩展了
MDScreen
Task_Card
。不需要
ViewScreen
来扩展
Task_Card
。我相信您希望您的
ViewScreen
包含
Task_Cards
,而不是
Task_Card
。将该类定义更改为:

class ViewScreen(MDScreen):

请参阅此问题,了解与您的情况相关的讨论。

© www.soinside.com 2019 - 2024. All rights reserved.