- 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 - 虚拟键盘
- 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 - 图集
- Kivy - 数据加载器
- Kivy - 缓存管理器
- Kivy - 控制台
- Kivy - 动画
- Kivy - 多笔画
- Kivy - 时钟
- Kivy - SVG
- Kivy - UrlRequest
- Kivy - 剪贴板
- Kivy - 工厂
- Kivy - 手势
- Kivy - 语言
- Kivy - 图形
- Kivy - 绘制
- Kivy - 打包
- 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 框架中的 ScrollView 控件可以包含任何尺寸大于分配给它的尺寸的其他控件,并为其提供一个可滚动的面板。这使得包含的控件可以垂直或水平平移/滚动。
ScrollView 类定义在 kivy.uix.scrollview 模块中。通常,您在一个布局中组合一个或多个控件,并将该布局添加到 ScrollView 中。
from kivy.uix.scrollview import ScrollView view = ScrollView() view.add_widget(layout)
ScrollView 对象的“scroll_x”和“scroll_y”属性控制滚动面板的滚动行为。ScrollView 允许双向滚动。您可以通过将“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 - 设置用于 scrollview 内容的滚动类型。可用选项为:['content'], ['bars'], ['bars', 'content']。
ScrollView 对象发出以下事件:
on_scroll_start - 触摸开始滚动时触发的通用事件。
on_scroll_move - 触摸滚动移动时触发的通用事件。
on_scroll_stop - 触摸停止滚动时触发的通用事件。
示例
为了能够理解 ScrollView 的工作原理,我们需要一个足够大的布局,以便它溢出主应用程序窗口的尺寸。为此,我们将 100 个按钮添加到一个单列网格布局中,并应用 scrollview 到它。
以下示例中的操作代码如下所示:
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()
输出
运行以上代码。要超出视图中可见的按钮,请使用鼠标垂直滚动,或者如果您正在使用触摸屏设备,则使用手指滚动。