使用Kivy的RecycleView进行类继承

2024-06-26 00:15:58 发布

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

我试图创建一个通用的RecycleView,并从中继承viewclass,如下所示:

<GenericList@RecycleView>:
    SelectableRecycleBoxLayout:
        canvas.before:
            Color:
                rgba: (.0, 0.9, .5, .8)
            Rectangle:
                pos: self.pos
                size: self.size
        default_size: None, 30
        default_size_hint: 1, None
        size_hint_y: None
        height: self.minimum_height
        orientation: 'vertical'
        multiselect: False

<SetList@GenericList>:
    viewclass: 'SetSelectableLabel'
<CardList@GenericList>:
    viewclass: 'CardSelectableLabel'

SetSelectableLabel和CardSelectableLabel之间的区别在于所选事件调用的方法。 我注意到,当使用此配置运行应用程序时,RecycleView不会显示任何viewclass对象。列表就在那里,我可以滚动它并看到滚动条在移动,但是没有显示任何标签

但是,如果我像下面那样在RecycleView中定义viewclass,那么一切都可以正常工作,除了我不能做我想做的事情,即更改继承类上的viewclass以实现自定义行为

<GenericList@RecycleView>:
    viewclass: 'GenericSelectableLabel'

我是不是遗漏了什么


Tags: posselfnonedefaultsizecanvasheightbefore
1条回答
网友
1楼 · 发布于 2024-06-26 00:15:58

RecycleView是一个不完整的小部件。有很多事情你做不到。例如:

rv = RecycleView()
rv.add_widget(RecycleBoxLayout())

上面的代码不起作用。您必须从kv构建一个小部件树,如下所示:

RecycleView:
    RecycleBoxLayout:

viewclass就是其中之一。您无法动态更改它,因此下面的代码:

rv = Bulider.load_string('''
RecycleView:
    RecycleBoxLayout:
''')
rv.viewclass = 'Label'  # doesn't work

不起作用。我不确定这是问题的原因,但你只需要意识到这种不完整性

相关问题 更多 >