Kivy 教程

Kivy - 主页

Kivy 基础知识

Kivy - 入门 Kivy - 安装 Kivy - 架构 Kivy - 文件语法 Kivy - 应用程序 Kivy - Hello World Kivy - 应用生命周期 Kivy - 事件 Kivy - 属性 Kivy - 输入 Kivy - 行为

Kivy 按钮

Kivy - 按钮 Kivy - 按钮事件 Kivy - 按钮颜色 Kivy - 按钮大小 Kivy - 按钮位置 Kivy - 圆形按钮 Kivy - 禁用按钮 Kivy - 图片按钮

Kivy 小部件

Kivy -小部件 Kivy - 标签 Kivy - 文本输入 Kivy - 画布 Kivy - 线条 Kivy - 复选框 Kivy - 下拉列表 Kivy - 窗口 Kivy - ScrollView Kivy - 轮播 Kivy - 滑块 Kivy - 图像 Kivy - 弹出窗口 Kivy - 开关 Kivy - 旋转器 Kivy - 拆分器 Kivy - 进度条 Kivy - 气泡 Kivy - 选项卡式面板 Kivy - 散点图 Kivy - 手风琴 Kivy - 文件选择器 Kivy - 颜色选择器 Kivy - 代码输入 Kivy - 模态视图 Kivy - 切换按钮 Kivy - 相机 Kivy - 树形视图 Kivy - reStructuredText Kivy - 操作栏 Kivy - 视频播放器 Kivy - 模板视图 Kivy - VKeyboard Kivy - 触摸涟漪 Kivy - 音频 Kivy - 视频 Kivy - 拼写 Kivy - 效果 Kivy - 输入记录器 Kivy - OpenGL Kivy - 文本 Kivy - 文本标记 Kivy - 设置

Kivy 布局

Kivy - 布局 Kivy - 浮动布局 Kivy - 网格布局 Kivy - 框布局 Kivy - 堆栈布局 Kivy - 锚点布局 Kivy - 相对布局 Kivy - 页面布局 Kivy - 循环布局 Kivy - 布局中的布局

Kivy 高级概念

Kivy - 配置对象 Kivy - Atlas Kivy - 数据加载器 Kivy - 缓存管理器 Kivy - 控制台 Kivy - 动画 Kivy - MultiStroke Kivy - 时钟 Kivy - SVG Kivy - UrlRequest Kivy - 剪贴板 Kivy - 工厂 Kivy - 手势 Kivy - 语言 Kivy - 图形 Kivy - 绘图 Kivy - 打包 Kivy - Garden Kivy - 存储 Kivy - 矢量 Kivy - Utils Kivy - Inspector 工具 Kivy - 工具 Kivy - 日志 Kivy - 帧缓冲区

Kivy 应用程序和项目

Kivy - 绘图应用程序 Kivy - 计算器应用程序 Kivy - 秒表应用程序 Kivy - 相机处理 Kivy - 图像查看器 Kivy - 贝塞尔曲线 Kivy - 画布应力 Kivy - 圆形绘制 Kivy - 小部件动画 Kivy - 杂项

Kivy - 循环布局

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

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

  • RecycleView.data 属性构成模型层。

  • RecycleDataModel 类实现视图层。视图分为布局和视图,并使用适配器实现。它在 RecycleLayout 中定义,它是一个抽象类。

  • 对于第三个组件 - Controller - RecycleViewBehavior 类并定义逻辑交互。RecycleView 类实现逻辑。它在"kivy.uix.recycleview"模块中定义。

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

  • viewclass − 将此属性设置为小部件类的名称。可回收视图将由此类的对象组成。例如,如果 viewclass 是按钮,则回收视图将是可滚动的按钮列表。任何小部件都可以用作此属性的值。

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

RecycleView 小部件树还必须包含某个布局管理器,以便可以找到视口。RecycleView 可以使用两种布局。一种是 RecycleBoxLayout(在"kivy.uix.recycleboxlayout"模块中可用),另一种是 RecycleGridLayout(在"kivy.uix.recyclegridlayout"模块中)。这两个布局类都继承了 BoxLayout 和 GridLayout 类。

示例

让我们在 RecycleView 小部件中加载一百个按钮。已添加到 RecycleBoxLayout。

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

其数据属性是字典列表。每个字典都有"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()

输出

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

Kivy 循环布局