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]