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