Kivy 简明教程

Kivy - Recycle Layout

通常,如果一个应用程序界面需要大量的部件来显示数据项目,其性能就会下降。Kivy 中的 RecycleView 部件提供了一个灵活的替代方案。使用 RecycleView,可以只查看一个大数据集的选定部分。它能够复用部件来显示可滚动的数据项目列表。这个功能非常适用于让用户滚动产品、图像等的列表。

循环布局的机制基于 MVC(模型-视图-控制器)架构。

  1. RecycleView.data 属性构成了模型层。

  2. RecycleDataModel 课程实现了视图层。视图被拆分为布局和视图,并使用适配器实现。在 RecycleLayout 中定义它,RecycleLayout 是一个抽象课程。

  3. 对于第三个组件 - 控制器 - RecycleViewBehavior 课程,并定义逻辑交互。RecycleView 课程实现了逻辑。它在“kivy.uix.recycleview”模块中定义。

需要实例化一个 RecycleView 对象,它会自动创建视图和数据课程。RecycleView 的两个重要属性必须设置,即 viewclass 和 data。

  1. viewclass − 将该属性设置为部件课程的名称。可循环利用的视图将包含该课程的对象。例如,如果 viewclass 是 Button,则循环视图将是可滚动的按钮列表。任何部件都可以用作该属性的值。

  2. data −数据本质上是字典的列表,并使用这些字典根据需要生成 viewclass 的实例。这是一个字典列表,其键映射到 viewclass 的对应属性名称。例如,如果 viewclass 设置为 Button,则数据可以是字典项的列表,在每个字典中,键应该是 Button 类的一个属性。

RecycleView 窗口树还必须包括某个布局管理器,以便可以找到视图端口。有两个布局可与 RecycleView 一起使用。一个为 RecycleBoxLayout (在 “kivy.uix.recycleboxlayout” 模块中可用),另一个为 RecycleGridLayout (在 “kivy.uix.recyclegridlayout” 模块中)。布局类都继承 BoxLayout 和 GridLayout 类。

Example

让我们在 RecycleView 窗口小部件中加载 100 个按钮。它们被添加到 RecycleBoxLayout。

要将按钮用作循环视图中的元素,请将其 viewclass 设置为 Button。

它的 data 属性是字典列表。每个字典都有 'text' 键,每个键的值都是按钮标题,如 BTN 1、BTN 2 等。以下列表解析语句以 − 形式编写字典

data=[{'text': 'BTN {}'.format(str(x))} for x in range(20)]

[{'text': 'BTN 0'}, {'text': 'BTN 1'}, {'text': 'BTN 2'},
{'text': 'BTN 3'}, {'text': 'BTN 4'}, {'text': 'BTN 5'},
{'text': 'BTN 6'}, {'text': 'BTN 7'}, {'text': 'BTN 8'},
{'text': 'BTN 9'}, {'text': 'BTN 10'}, {'text': 'BTN 11'},
{'text': 'BTN 12'}, {'text': 'BTN 13'}, {'text': 'BTN 14'},
{'text': 'BTN 15'}, {'text': 'BTN 16'}, {'text': 'BTN 17'},
{'text': 'BTN 18'}, {'text': 'BTN 19'}]

以下是 RecycleView 应用程序的 “kv” 语言脚本 −

RecycleView:
   viewclass: 'Button'
   data: [{'text': 'BTN {}'.format(str(x))} for x in range(20)]
   RecycleBoxLayout:
      default_size: None, dp(56)
      default_size_hint: 1, None
      size_hint_y: None
      height: self.minimum_height
      orientation: 'vertical'

App 类只需要加载此 “kv” 文件,只需使用 pass 语句保留 build() 方法即可。

from kivy.app import App
from kivy.uix.button import Button
from kivy.core.window import Window

Window.size = (720,400)
class recycled(App):
   def build(self):
      pass

recycled().run()

Output

通过运行上述 Python 脚本来测试代码的输出。你应获得如下所示的按钮可滚动视图 −

kivy recycle layout