Kivy 简明教程
Kivy - Utils
Kivy 库中的“kivy.utils”模块是各种类别(如数学、颜色、代数函数等)中通用实用函数的集合。
QueryDict
QueryDict 类的对象类似于 Python 的内置 dict 类。此外,它还提供了一个使用点(.)运算符查询对象的功能。
要构建 QueryDict,既可以传递一个包含两个元素元组的列表,也可以直接传递一个字典对象。
# list of tuples
qd = QueryDict([('a',1), ('b',2)])
print (qd)
列表的每个元组元素都应该包含两件内容。第一件内容是键,第二件内容是值。
{'a': 1, 'b': 2}
另一方面,可以将一个字典对象直接传递到 QueryDict 构造函数中。
qd=QueryDict({'a':1, 'b':2})
在标准字典中定义的 [] 运算符可以获取属于某一特定键的值,而 QueryDict 提供了一个点运算符。因此,“qd.k”和“qd['k']”是相同的。请注意,也可以将 dict 类的 get() 方法与 QueryDict 一起使用。
可以使用常规切片运算符赋值或点运算符来更新键的值。
qd.a=100
qd['b']=200
试用以下 example :
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 类继承了内置的列表类。除了继承自列表的方法之外,还为 SafeList 类定义了一个新的方法 clear()。它会移除列表中的所有内容。
可以将一个可变序列(列表)传递给构造函数来创建 SafeList 对象。如果没有传递任何参数,它会创建一个空列表。调用 clear() 方法会移除所有内容。
difference()
此函数返回两个列表之间的差。更具体地说,它会移除第一个列表中存在于第二个列表中的那些内容。
escape_markup()
Kivy App 窗口中的标签能够显示标记文本。但是,如果希望标记符号的效果不生效,可以对文本中发现的标记字符进行转义。这旨在在标签上激活标记文本时使用。
在下面的示例中,要在标签上显示的文本包含 [b] 和 [/b] 标记标签,它们会将测试转换为粗体。但是,要忽略此效果,文本会传递到 escape_markup() 函数中。
Example
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()
get_color_from_hex()
将 hex 字符串颜色转换为 kivy 颜色。为 color 属性提供的 RGBA 值介于 0 到 1 之间。由于 RGB 值在 0 到 255 之间,因此 Kivy 颜色值会将这些数字除以 255。因此,RGB 值 50、100、200 分别表示为 50/255、100/255 和 200/255。
hex 颜色值以字符串的形式给出,每个字符串有 2 个十六进制数字,分别代表 RGB,并以“#”符号作为前缀。get_color_from_hex() 函数将 Hex 字符串转换为 Kivy 颜色值。