【kivy property】ColorProperty 屬性的用法|Kivy基礎用法

更新 發佈閱讀 10 分鐘



本篇開始:

  • 我的開發環境是win11
  • python是3.10.7版本
  • kivy我設定在2.1.0版本
  • 編碼的工具是Visual Studio Code(VS Code)



【本篇說明】在kivy裡面,屬性(property)有分很多種,比如 NumericProperty、ColorProperty、ObjectProperty、BooleanProperty 等等,這次要來分享的是 ColorProperty。

ColorProperty 在中文翻譯為"顏色屬性",是專門用來存放 rgba(或rgb)顏色串列,預設值為[1.0, 1.0, 1.0, 1.0](白色),通常屬性會在類別中宣告使用,不同於"變數"宣告,變數只能存放數字、字串以及布林值。

以下使用基本語法:

1.寫下固定的程式碼

以下.py程式碼:(在vscode開啟python檔案,取名為main.py,以下簡稱.py)

from kivy.app import App
from kivy.uix.floatlayout import FloatLayout

class firstlayout(FloatLayout):
pass

class Mainapp(App):
def build(self):
return firstlayout()

if __name__ == "__main__":
Mainapp().run()

▲說明:

1.從 kivy.uix.floatlayout這個模組導入 FloatLayout類別 (如果還沒看過,可參考:【kivy layout】FloatLayout類別的使用方法)

2.創建一個class 類別取名為 firstlayout(可自取無限定命名),然後在()填入 FloatLayout,目的是為了繼承 FloatLayout類別所有特性

3.這邊 kivy language(kv),我使用的是"相同命名方式",如果不太懂我說的,可先參考這篇:【kivy language】如何使用 kivy language(kv)



raw-image

▲說明:main.py程式碼


2.將屬性及函式寫入 Python檔案

1.以下 main.py程式碼:

from kivy.properties import ColorProperty

▲說明:導入屬性 ColorProperty

2.改寫 firstlayout類別內容

class firstlayout(FloatLayout):
a1 = ColorProperty([30/255, 30/255, 30/255])
a2 = ColorProperty('lightpink')
a3 = ColorProperty([117/255, 220/255, 141/255])
a4 = ColorProperty()

def change_color(self, background_color):
self.a4 = background_color

def on_a4(self, instance, value):
print("a4顏色屬性值改變了,為:", value)

▲說明:

1.宣告屬性 a1,將[30/255, 30/255, 30/255] 顏色串列存入

2.宣告屬性 a2,將 'lightpink' 存入,除了可填為顏色串列,也可填入字串

3.宣告屬性 a3,將[117/255, 220/255, 141/255] 顏色串列存入

4.宣告屬性 a4,將預設值(白色)存入

5.定義函式 change_colo,()裡面加入 self, background_color 等兩個參數

6.使 a4為 background_color傳入的參數值

7.屬性特有的觸發事件,當屬性值發生改變時,就能觸發函式,命名時必須是on_加上 a4

8.定義函式 on_a4(),()裡面加入 self, instance, value 這3個參數,其中 value為 a4的屬性值

9.列印出 a4屬性值來確認,主要是為了複核用


raw-image

▲說明:main.py程式碼


3.在 VSCode新增(kivy)檔案,我取名 main.kv,並且放在同資料夾內

raw-image

▲說明:我的是放在以下路徑:桌面-> python-> Kivy-> test


4.寫入 main.kv程式碼

以下.kv程式碼:(在vscode編輯 main.kv,簡稱.kv)

<firstlayout>:
FloatLayout:
a4:b4

Button:
size_hint: .2, .2
pos: 200, 50
background_normal: ''
background_color: root.a1
on_press: root.change_color(self.background_color)

Button:
size_hint: .2, .2
pos: 400, 50
background_normal: ''
background_color: root.a2
on_press: root.change_color(self.background_color)

Button:
size_hint: .2, .2
pos: 600, 50
background_normal: ''
background_color: root.a3
on_press: root.change_color(self.background_color)

Label:
id: b4
text:'its a showcase'
font_size: 50
bold: True
color: root.a4
size_hint: .3, .3
pos_hint: {'center_x':.5, 'center_y':.7}

▲說明:

1.有關 Button及 Label基本使用,請參考[【kivy Label】經常使用的Label(標籤)語法][【kivy Button】經常使用的Button(按鈕)語法]

2.在<firstlayout> :底下縮排加入 FloatLayout:

3.a4:b4,讓 a4屬性對等 b4參數,在kivy要使用分號":",不同於python使用等號"="

4.id:b4,讓 Label物件的 id參數等於 b4

5.background_color: 為 root根物件(也就是類別 firstlayout)的 a1 ~ a3屬性值

6.on_press: 呼叫 root根物件(也就是類別 firstlayout)的 change_color函式

7.將物件本身的 background_color 帶入 change_color函式使用

8.因改變 a4屬性值,也就改變了Label的 color參數值



raw-image

▲說明:main.kv程式碼


5.執行 Python檔案

raw-image
raw-image


raw-image


raw-image

▲說明:每當按下 Button時,屬性值改變了,呼叫函式會使 Label字體顏色改變


raw-image

▲說明:透過終端機列印,確認 a4屬性值


6.如果不用屬性,改用變數也可以有相同效果嗎?

現在將顏色屬性改為變數,變數可為數字、字串及布林值

改寫以下main.py程式碼:

a4 = 'white'

▲說明:宣告變數 a4,將字串'white'存入

raw-image

▲說明:改寫的 main.py程式碼

raw-image

▲說明:執行Python檔案,按下 Button時,也不會改變顏色

raw-image

▲說明:終端機無列印結果


7.本篇小結

透過顏色屬性,可以存入不同的顏色串列或字串,當屬性值發生改變,也能同時觸發函式。但是,變數無法做到這樣的效果。


本篇結束:

在自學路上遇到困難是很正常的事,只要堅持到底,相信就會有所成果,期勉大家一同努力。


留言
avatar-img
留言分享你的想法!
avatar-img
艾肯比工程師
3會員
69內容數
主要分享應用程式開發過程、遭遇困難及解決技巧,提供給自學或獨立開發者做為參考,希望能對您們有所幫助。
艾肯比工程師的其他內容
2025/11/20
本篇文章探討 Kivy 框架中的 NumericProperty,並透過實例學習如何宣告屬性,並利用屬性變動觸發函式,實現使用者介面的動態更新。
Thumbnail
2025/11/20
本篇文章探討 Kivy 框架中的 NumericProperty,並透過實例學習如何宣告屬性,並利用屬性變動觸發函式,實現使用者介面的動態更新。
Thumbnail
2025/11/13
本篇文章延續 Kivy TextInput 物件的基本介紹,如何利用觸發函式 ,實現將使用者輸入的文字即時顯示在 Label 元件中的進階功能。
Thumbnail
2025/11/13
本篇文章延續 Kivy TextInput 物件的基本介紹,如何利用觸發函式 ,實現將使用者輸入的文字即時顯示在 Label 元件中的進階功能。
Thumbnail
2025/11/04
本篇文章將繼續分享 python Kivy 中 TextInput 部件的用法,涵蓋設定文字與背景顏色、游標,並示範如何加入提示文字、設定為密碼輸入模式。
Thumbnail
2025/11/04
本篇文章將繼續分享 python Kivy 中 TextInput 部件的用法,涵蓋設定文字與背景顏色、游標,並示範如何加入提示文字、設定為密碼輸入模式。
Thumbnail
看更多
你可能也想看
Thumbnail
Python資料視覺化在數據分析中扮演關鍵角色,透過視覺化捕捉數據模式、趨勢和異常,透過Matplotlib等工具創建專業圖表變相對簡單和高效。
Thumbnail
Python資料視覺化在數據分析中扮演關鍵角色,透過視覺化捕捉數據模式、趨勢和異常,透過Matplotlib等工具創建專業圖表變相對簡單和高效。
Thumbnail
介紹pygame支援的向量運算,以及向量的減法、乘法、除法實際上是怎麼計算的。
Thumbnail
介紹pygame支援的向量運算,以及向量的減法、乘法、除法實際上是怎麼計算的。
Thumbnail
本文介紹了Python中的物件導向程式設計的重要概念,包括類別、繼承、多型、封裝、介面、抽象類別、靜態類別、列舉、委派、Lambda表達式、泛型和反射。每個概念都有對應的程式碼範例來說明其用法和功能。這些概念對於理解和使用Python進行物件導向程式設計至關重要。
Thumbnail
本文介紹了Python中的物件導向程式設計的重要概念,包括類別、繼承、多型、封裝、介面、抽象類別、靜態類別、列舉、委派、Lambda表達式、泛型和反射。每個概念都有對應的程式碼範例來說明其用法和功能。這些概念對於理解和使用Python進行物件導向程式設計至關重要。
Thumbnail
Python語法包括條件語句、迴圈、函數和變數的使用。條件語句如if、elif和else用於進行條件判斷,for和while是兩種主要的迴圈,def用於定義函數。變數可以被賦予數字或字符串,並可使用類型提示來指定變數的類型。註解可以是單行或多行,並可用於解釋函數或類的用途和作用。
Thumbnail
Python語法包括條件語句、迴圈、函數和變數的使用。條件語句如if、elif和else用於進行條件判斷,for和while是兩種主要的迴圈,def用於定義函數。變數可以被賦予數字或字符串,並可使用類型提示來指定變數的類型。註解可以是單行或多行,並可用於解釋函數或類的用途和作用。
Thumbnail
Python是一種易學且功能強大的程式語言,具有直譯、動態語法等特性,並擁有豐富的標準庫。它在各領域如Web開發、數據科學和人工智慧等得到廣泛應用,並被許多大公司如Google和Facebook等使用。Python還有強大的框架、豐富的交互機能、和龐大的社區。
Thumbnail
Python是一種易學且功能強大的程式語言,具有直譯、動態語法等特性,並擁有豐富的標準庫。它在各領域如Web開發、數據科學和人工智慧等得到廣泛應用,並被許多大公司如Google和Facebook等使用。Python還有強大的框架、豐富的交互機能、和龐大的社區。
Thumbnail
在程式中,了解資料型態是相當重要的。 為什麽? 因為許多error,常常都是因為資料型態不正確所導致的。 舉個例子,在python中: a = 1 + 2 print(a) 結果就是3 a = = "1"+"2" print(a) 結果就是12 是不是差很多? 所以今天我來介
Thumbnail
在程式中,了解資料型態是相當重要的。 為什麽? 因為許多error,常常都是因為資料型態不正確所導致的。 舉個例子,在python中: a = 1 + 2 print(a) 結果就是3 a = = "1"+"2" print(a) 結果就是12 是不是差很多? 所以今天我來介
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News