如何将小部件动态添加到TabbedPanelItem中的GridLayout

2024-10-01 15:43:23 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在开发一个应用程序,它将按顺序将标签和复选框添加到一个本身位于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))



Tags: textid应用程序内容顺序标签tabcols
1条回答
网友
1楼 · 发布于 2024-10-01 15:43:23

下面的解决方案演示了如何访问TabbedPanel,并在Python脚本中动态添加一个新的TabbedPanelItem。你知道吗

kv文件

  • id: tp添加到TabbedPanel:

片段

<Screen2>:
    tp: tp

    FloatLayout:

        TabbedPanel:
            id: tp
            do_default_tab: False

py文件

  • 启动ScrollView小部件并将其分配给变量sv
  • 将启动的ScrollView小部件分配给contentmenuTab
  • 添加GridLayout作为ScrollView的子级

片段

def create_dyn_tab(self):
    menuTab = TabbedPanelHeader(text="Menu")
    self.tp.add_widget(menuTab)
    sv = ScrollView()
    menuTab.content = sv
    container = GridLayout(cols=2)
    sv.add_widget(container)
    for i in range(8):
        container.add_widget(Label(text='Label'+str(i)))
        container.add_widget(CheckBox())

输出

Result

相关问题 更多 >

    热门问题