Kivy - 工具庫



Kivy 庫中的“kivy.utils”模組是各種類別(例如數學、顏色、代數函式等)中通用實用函式的集合。

QueryDict

QueryDict 類的物件類似於 Python 的內建 dict 類。此外,它還提供了一種使用點(.)運算子查詢物件的方法。

要構造 QueryDict,您可以傳遞一個包含兩個元素的元組列表,也可以傳遞一個 dict 物件本身。

# list of tuples
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 *

# from RGBA color values
c = rgba([100,150,200, 255])
print ("from RGBA:",c)

# from hex string
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]
廣告
© . All rights reserved.