ListView in Kivy(.kv vs.py)

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

如果我在.kv文件中初始化一个空的ListView,

<Panel>:
    do_default_tab: False
    size_hint_y: 0.7
    TabbedPanelItem:
        id: tab_1
        text: 'VIEW'
        ListView:
            id: VIEWlist
            adapter:
                ListAdapter(
                data=[], 
                args_converter = root.args_converter,
                selection_mode='multiple', 
                cls=ListItemButton
                )

我如何从.py方面向它添加数据?

python kivy kivy-language
1个回答
0
投票

您需要访问VIEWlist.adapter.data财产。一个例子:

from kivy.app import App
from kivy.uix.tabbedpanel import TabbedPanel
from kivy.lang import Builder

Builder.load_string('''
#:import ListItemButton kivy.uix.listview.ListItemButton
#:import ListAdapter kivy.adapters.listadapter.ListAdapter

<Panel>:
    size_hint: .5, .5
    pos_hint: {'center_x': .5, 'center_y': .5}
    do_default_tab: False

    TabbedPanelItem:
        id: tab_1
        text: 'VIEW'
        BoxLayout:
            orientation: 'vertical'
            Button:
                text: 'add'
                on_press: root.add()
            ListView:
                id: VIEWlist
                adapter:
                    ListAdapter(
                    data=[], 
                    selection_mode='multiple', 
                    cls=ListItemButton)
''')


class Panel(TabbedPanel):
    def add(self, *args):
        self.ids['VIEWlist'].adapter.data.append('txt')


class TabbedPanelApp(App):
    def build(self):
        return Panel()


if __name__ == '__main__':
    TabbedPanelApp().run()
© www.soinside.com 2019 - 2024. All rights reserved.