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 - Storage 类

Kivy 框架中的 Storage 类用于通过索引条目加载和存储任意数量的键值对。"kivy.storage"模块定义了 AbstractStore 类。其实现 − DictStore、JsonStoreRedisStore −提供具体的类。

  • kivy.storage.dictstore.DictStore:使用 python 字典作为存储。

  • kivy.storage.jsonstore.JsonStore:使用 JSON 文件作为存储。

  • kivy.storage.redisstore.RedisStore:使用带有 redis-py 的 Redis 数据库。

要使用上述任何存储类,请导入相关类,声明一个对象并调用其 put() 方法来存储 k-v 对。对于 JsonStore −

from kivy.storage.jsonstore import JsonStore

store = JsonStore('hello.json')

# 放入一些值
store.put(name, key1=val1, key2=val2)

这将在当前目录中创建 hello.json 文件。您可以使用 get() 方法检索信息。

print (store.get(name)[key])

以下方法在 AbstractStore 类中定义,需要由具体实现(如 DictStore −)覆盖

  • clear() −清除整个存储。

  • count() − 返回存储中的条目数。

  • delete(key) − 从存储中删除一个键。如果未找到该键,则会引发 KeyError 异常。

  • exists(key) − 检查存储中是否存在键。

  • find(**filters) − 返回与过滤器匹配的所有条目。这些条目通过生成器作为 (key, entry) 对的列表返回,其中 entry 是键值对的字典。

  • get(key) − 获取存储在 key 处的键值对。如果找不到键,则会抛出 KeyError 异常。

  • keys() − 返回存储中所有键的列表。

  • put(key, **values) − 将新的键值对(在值中给出)放入存储中。任何现有的键值对都将被删除。

方法(get()、put()、exists()、delete()、find())具有异步版本。可以使用或不使用回调参数来调用这些方法。如果给定,回调会在可用时将结果返回给用户,因为请求将是异步的。如果回调为 None,则请求将是同步的,并且将直接返回结果。

示例

以下是示例 −

# synchronous
res=store.get(key)
print (res)

# asynchronous
def my_callback(store, key, result):
   print (result)
   
store.get(key) 

回调函数应具有以下参数 −

  • store − 当前使用的"Store"实例。

  • key − 所寻找的密钥。

  • result −查找键的结果。

示例

from kivy.storage.jsonstore import JsonStore
from kivy.storage.dictstore import DictStore

store = JsonStore('store.json')

# 放入一些值
store.put('state', name='Maharashtra', capital='Mumbai',
population='Eleven Cr')
store.put('os', name='Windows', version=11, launched=2021)
store.put('shape', type='circle', radius=5)

# 使用相同的索引键会清除所有先前添加的 k-v 对
# 使用索引键和键获取值
print('Population of ', store.get('state')['name'], 'is ',
store.get('state')['population'])
print (store.get('state').keys())
for k,v in store.get('state').items():
	print (k,":",v)

# 或猜测密钥的一部分的密钥/条目
for item in store.find(type='circle'):
   print('Store:',item[0])
   print('K-V pairs: ',str(item[1]))

输出

它将产生以下输出 −

Population of Maharashtra is Eleven Cr
dict_keys(['name', 'capital', 'population'])
name : Maharashtra
capital : Mumbai
population : Eleven Cr
Store: shape
K-V pairs: {'type': 'circle', 'radius': 5}