如何在TabbedPanelItem内将小部件动态添加到GridLayout

时间:2019-04-30 19:38:21

标签: python kivy

我正在开发一个应用程序,该应用程序将Labels和CheckBoxes顺序添加到本身位于TabbedPanelItem内部的GridLayout中。有两个TabbedPanelItems将保持静态,我希望创建第三个,其内容由本地数据库提供。

我不确定如何用python创建这个新的TabbedPanelItem而不必重新创建整个屏幕。

我有一个Screen2(Screen)类,它(我认为)控制Kivy的输出。我的麻烦是我似乎无法访问TabbedPanel,并且每次添加窗口小部件时,它都会覆盖在整个应用程序中,而我却希望将其包含在新选项卡的内容中。

<Screen2>:

    FloatLayout:

        TabbedPanel:
            do_default_tab: False

            TabbedPanelItem:
                text: "TAB 1"

                BoxLayout:
                    orientation: 'vertical'
                    id: info

                    ScrollView:

                        GridLayout:
                            id: container
                            cols: 2
                            size_hint_y: 1
                            padding : 30,30
                            spacing: 10, 10
                             .
                             .
                             .
            TabbedPanelItem:
                text: "TAB2"

class Screen2(screen):
    def create_dyn_tab(self):
        panel = TabbedPanel()
        menuTab = TabbedPanelHeader(text="Menu")
        panel.add_widget(menuTab)

        menuContent = []

        menuTab.content = ScrollView(GridLayout(cols=2))


1 个答案:

答案 0 :(得分:0)

以下解决方案展示了如何访问TabbedPanel,以及如何在Python脚本中动态添加新的TabbedPanelItem

kv文件

  • id: tp添加到TabbedPanel:

摘要

<Screen2>:
    tp: tp

    FloatLayout:

        TabbedPanel:
            id: tp
            do_default_tab: False

py文件

  • 启动ScrollView小部件,并将其分配给变量sv
  • 将启动的ScrollView小部件分配到content的{​​{1}}
  • menuTab添加为GridLayout的子代

摘要

ScrollView

输出

Result