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 - ScrollView 小部件

Kivy 框架中的 ScrollView 小部件可封装任何尺寸大于分配给它的尺寸的其他小部件,并为其提供可滚动面板。这使封装的小部件可以垂直或水平平移/滚动。

ScrollView 类在 kivy.uix.scrollview 模块中定义。您通常在布局中组合一个或多个小部件,并将布局添加到 ScrollView。

from kivy.uix.scrollview import ScrollView
view = ScrollView()
view.add_widget(layout)

ScrollView 对象的"scroll_x"和"scroll_y"属性控制滚动面板的滚动行为。ScollView 支持双向滚动。您可以通过将"do_scroll_x"或"do_scroll_y"设置为 False 来禁用轴上的滚动。

此外,"scroll_distance"属性设置行进的最小距离,默认为 20 像素。此外,scroll_timeout 属性指定最大时间段,默认为 55 毫秒。

"scroll_distance"和"scroll_timeout"的意义在于:如果触摸手势滚动的像素数大于或等于 scroll_distance,并且在 scroll_timeout 时间段内,则将其识别为滚动手势并开始平移(滚动/平移)。如果发生超时,则触摸事件将传播给子级。

ScrollView 类的其他属性如下所示 −

  • do_scroll −允许在 X 或 Y 轴上滚动。

  • do_scroll_x − 允许在 X 轴上滚动。这是一个 BooleanProperty,默认为 True。

  • do_scroll_y − 允许在 Y 轴上滚动。这是一个 BooleanProperty,默认为 True。

  • scroll_distance − 滚动 ScrollView 之前要移动的距离,以像素为单位。它是一个 NumericProperty,默认为 20 像素。

  • scroll_timeout − 允许触发 scroll_distance 的超时时间,以毫秒为单位,默认为 55 毫秒

  • scroll_to() −滚动视口以确保给定的小部件可见,可选择使用填充和动画。

  • scroll_type − 设置用于滚动视图内容的滚动类型。可用选项为:['content']、['bars']、['bars', 'content']。

  • ScrollView 对象发出以下事件 −

    • on_scroll_start − 当滚动从触摸开始时触发的通用事件。

    • on_scroll_move − 当滚动从触摸移动时触发的通用事件。

    • on_scroll_stop −滚动因触摸而停止时触发的通用事件。

示例

为了能够理解 ScrollView 的工作原理,我们需要一个足够大的布局,以便它溢出主应用程序窗口的尺寸。为此,我们将 1oo 个按钮添加到单列网格布局中,并将滚动视图应用于它。

以下示例中的操作代码如下 −

layout = GridLayout(cols=1)

for i in range(100):
   btn = Button(text='Button ' + str(i), size_hint_y=None, height=40)
   layout.add_widget(btn)

root = ScrollView()
root.add_widget(layout)

为确保高度足以滚动,请将布局对象的 minimum_height 属性绑定到其设置器。

layout.bind(minimum_height=layout.setter('height'))

以下是 ScrollView 演示代码的完整代码−

from kivy.uix.gridlayout import GridLayout
from kivy.uix.button import Button
from kivy.uix.scrollview import ScrollView
from kivy.app import App
from kivy.core.window import Window

Window.size = (720, 350)

class scrollableapp(App):
   def build(self):
      layout = GridLayout(cols=1, spacing=10, size_hint_y=None)
      layout.bind(minimum_height=layout.setter('height'))

      for i in range(100):
         btn = Button(text='Button ' + str(i), size_hint_y=None, height=40)
         layout.add_widget(btn)
      
      root = ScrollView(
         size_hint=(1, None),
         size=(Window.width, Window.height)
      )
      root.add_widget(layout)
      return root

scrollableapp().run()

输出

运行上述代码。要超出视图中可见的按钮,请使用鼠标或手指(如果您使用的是支持触摸的设备)垂直滚动。

Kivy Scrollview