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 - Utils

Kivy 库中的"kivy.utils"模块是各种类别的通用实用函数的集合,例如数学、颜色、代数函数等。

QueryDict

QueryDict 类的对象类似于 Python 的内置 dict 类。此外,它还提供了使用点 ( . ) 运算符查询对象的功能。

要构造 QueryDict,您可以传递两个元素元组的列表,也可以传递 dict 对象本身。

# 元组列表
qd = QueryDict([('a',1), ('b',2)])
print (qd)

列表的每个元组元素都应该有两个项目。第一项是键,第二项是其值。

{'a': 1, 'b': 2}

另一方面,您可以将 dict 对象本身传递给 QueryDict 构造函数。

qd=QueryDict({'a':1, 'b':2})

虽然可以使用标准 dict 中定义的 [] 运算符获取属于某个键的值,但 QueryDict 提供了一个点运算符。因此,"qd.k"与"qd['k']"相同。请注意,dict 类的 get() 方法也可以与 QueryDict 一起使用。

您可以使用常规切片运算符赋值或点运算符来更新键的值。

qd.a=100
qd['b']=200

尝试下面的示例

from kivy.utils import *

# list of tuples
qd=QueryDict([('a',1), ('b',2)])
print (qd)
print (qd.a, qd['a'])

qd=QueryDict({'a':1, 'b':2})
print (qd)
print (qd.b, qd['b'])
print (qd.get('a'))

qd.a=100
qd['b']=200
print (qd)

SafeList

Kivy 中的 SafeList 类继承了内置的 list 类。除了从 list 继承的方法之外,SafeList 类中还定义了一个新方法 − clear()。它会删除列表中的所有项目。

您可以将可变序列(列表)传递给构造函数以创建 SafeList 对象。如果没有传递参数,它将创建一个空列表。调用 clear() 方法将删除所有项目。

示例

from kivy.utils import *

sl = SafeList([1,2,3,4])
print ("SafeList:",sl)

l = [1,2,3,4]
sl = SafeList(l)
print ("SafeList:",sl)

sl.clear()
print ("SafeList:",sl)

输出

SafeList: [1, 2, 3, 4]
SafeList: [1, 2, 3, 4]
SafeList: []

difference()

此函数返回两个列表之间的差异。更具体地说,它从第一个列表中删除在第二个列表中找到的那些项目。

示例

from kivy.utils import *

l1=[1,2,3,4]
l2=[3,4,5,6]
print (l1, l2)
print ("l1-l2:",difference(l1,l2))
print ("l2-l1:",difference(l2,l1))

输出

[1, 2, 3, 4] [3, 4, 5, 6]
l1-l2: [1, 2]
l2-l1: [5, 6]

escape_markup()

Kivy 应用窗口上的标签能够显示标记文本。但是,如果您希望标记符号的效果不生效,则可以转义文本中的标记字符。这旨在用于 当标签上激活标记文本时。

在下面的示例中,要在标签上显示的文本包含 [b] 和 [/b] 标记标签,这会将测试转换为粗体。但是,为了忽略此效果,文本将传递给 escape_markup() 函数。

示例

from kivy.app import App
from kivy.uix.label import Label
from kivy.utils import escape_markup
from kivy.core.window import Window

Window.size = (720,400)

class HelloApp(App):
   def build(self):
      text = 'This is an [b]important[/b] message'
      text = '[color=ff0000]' + escape_markup(text) + '[/color]'
      lbl=Label(text=text, font_size=40, markup=True)
      return lbl

HelloApp().run()

输出

Kivy Utils

get_color_from_hex()

将十六进制字符串颜色转换为 kivy 颜色。颜色属性的 RGBA 值介于 0 到 1 之间。由于 RGB 值的范围是 0 到 255,因此 Kivy 颜色值将该数字除以 255。因此 RGB 值 50、100、200 分别表示为 50/255、100/255 和 200/255。

十六进制颜色值以字符串形式给出,每个 RGB 包含 2 个十六进制数字,并以"#"符号为前缀。get_color_from_hex() 函数将十六进制字符串转换为 Kivy 颜色值。

示例

from kivy.utils import *
c = get_color_from_hex("#00ff00")
print (c)

输出

[0.0, 1.0, 0.0, 1.0]

get_hex_from_color(color)

将 kivy 颜色转换为十六进制值 −

示例

from kivy.utils import *
c = get_hex_from_color([0,1,0,1])
print (c)

输出

#00ff00ff

rgba()

从十六进制字符串或 0-255 值列表中返回 Kivy 颜色(0-1 范围内的 4 个值)。

示例

from kivy.utils import *

# 来自 RGBA 颜色值
c = rgba([100,150,200, 255])
print ("from RGBA:",c)

# 来自十六进制字符串
c = rgba('#3fc4e57f')
print ("from hex string:",c)

输出

from RGBA: [0.39215686274509803, 0.5882352941176471, 0.7843137254901961, 1.0]
from hex string: [0.24705882352941178, 0.7686274509803922, 0.8980392156862745, 0.4980392156862745]