将网格布局动态添加到在 .kv 中创建的另一个布局

Dynamically add Grid Layouts to another layout created in .kv

我希望能够从 .py 文件向我的滚动列表添加一行。我想将每一行创建为一个对象,这样它就可以拥有像 "user_id" 这样的数据,它保存但不显示(也可以采用不同的方法)。另外,请记住滚动布局是在清除屏幕中创建的。请帮忙。我真的很需要它。

来自我的 screens.py:

class PurgeScreen(Screen):
    def backButton(self):
        SCREEN_MANAGER.current = 'dashboard'


class ListRow(PurgeScreen):
    def __init__(self, username, userid, profile_pic):
        self.username = username
        self.userid = userid
        self.profile = profile_pic

    def create_row(self):
        layout = GridLayout(row=1, row_force_default=True, row_default_height=40)
        layout.add_widget(Label(text=self.username))
        # Im going to add more stuff in the future
        self.ids.widget_list.add_widget(layout)

来自我的 purge.kv:

<PurgeScreen>:
    name: 'purge'
    FloatLayout:
        size_hint: None, None
        ScrollView:
            size_hint: (None, None)
            do_scroll_x: False
            bar_width: 4
            bar_inactive_color: (.7, .7, .7, .4)
            size: (root.width * .75, root.height * .65)
            x: (root.width * .5) - (self.width/2)
            y: root.height * 0.2
            GridLayout:
                id: widget_list
                cols: 1
                size_hint_y: 2
                height: self.minimum_height

                Button:
                    text: "1"

                Button:
                    text: "2"

                Button:
                    text: "3"

                Button:
                    text: "4"

代码看起来不错,但是

  1. 什么时候调用方法create_row
  2. 您是否有一个小部件(按钮或其他东西)会触发此方法以将小部件添加到 GridLayout?