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

更新 發佈閱讀 7 分鐘


本篇開始:

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



【本篇說明】在kivy裡面,屬性(property)有分很多種,比如說 NumericProperty、ColorProperty、ObjectProperty、BooleanProperty 等等,這次分享的是 ObjectProperty (字面翻譯為"物件屬性"),專門用來存放物件,也可以用來跟kivy widget綁在一起,方便程式碼撰寫。

以下分享我使用上的基本語法:

寫下固定的程式碼

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

from kivy.app import App
from kivy.uix.boxlayout import BoxLayout

class firstlayout(BoxLayout):
pass

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

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

▲說明:

1.從 kivy.uix.boxlayout這個模組導入 BoxLayout類別 (如果還沒看過,可參考:【kivy layout】BoxLayout類別 基本使用)

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

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



raw-image

▲說明:main.py程式碼

將屬性及函式寫入main.py

1.以下 main.py程式碼:

from kivy.properties import NumericProperty, ObjectProperty

▲說明:導入所需的屬性

2.改寫 firstlayout類別內容

class firstlayout(BoxLayout):
a1 = NumericProperty(10)
a2 = ObjectProperty()

def btn(self):
self.a1 += 5

def on_a1(self, instance, value):
print("a1屬性值被改變了,為:", value)
self.a2.text = f'label.text_size is {value}'

▲說明:

1.宣告 a1為10的 NumericProperty,預設值為0

2.宣告 a2為None的ObjectProperty,預設為None

3.定義函式 btn(),()裡面寫 "self"這個必要參數,當呼叫函式會執行: a1 + 5 (原碼也可寫成 self.a1 = self.a1 +5)

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

5.定義函式 on_a1(),()裡面加入 self, instance, value 這3個參數,其中 value為 a1的數值

6.另列印出 a1屬性值來確認,看看是否每次增加5

7.讓 a2的 text參數等於格式化字串


raw-image

▲說明:main.py程式碼


在 VSCode新增(kivy)檔案,我取名 main.kv,為了符合上面說的"相同命名方式",並且放在同資料夾內

raw-image

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


寫入 main.kv程式碼

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

<firstlayout>:
orientation: 'vertical'
a2:b2

Label:
id:b2
text: 'Nothing happen'
font_size: root.a1

Button:
text:'press to change'
font_size: 30
on_press: root.btn()

▲說明:

1.a2:b2,讓 a2跟 b2綁定,【這邊要注意】a2要為 ObjectProperty,否則會無法綁定,也就是 a2屬性改變無法同步改變 b2

2.id:b2,讓 Label物件的 id參數等於 b2

3.font_size: 為 root根物件(也就是類別 firstlayout)的 a1屬性值

4.on_press: 使用 root根物件(也就是類別 firstlayout)的 btn函式


raw-image

▲說明:main.kv程式碼

執行 Python檔案

raw-image


raw-image

▲說明:每當按下 Button時,a1屬性值改變,Label字體會變大。同時 Label文字變成格式化字串內容

raw-image

▲說明:終端機列印出來 a1屬性值

本篇小結

個人覺得在使用 ObjectProperty,比起其他屬性更為彈性,並透過與 kivy widget綁定,程式碼編寫會方便許多。

本篇結束:

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


留言
avatar-img
留言分享你的想法!
avatar-img
艾肯比工程師
3會員
66內容數
主要分享應用程式開發過程、遭遇困難及解決技巧,提供給自學或獨立開發者做為參考,希望能對您們有所幫助。
艾肯比工程師的其他內容
2025/12/03
本文將介紹 Kivy 中 StringProperty(字串屬性)的用法,透過實際範例說明如何宣告、調用及觸發事件,提升程式碼的可維護性和互動性。
Thumbnail
2025/12/03
本文將介紹 Kivy 中 StringProperty(字串屬性)的用法,透過實際範例說明如何宣告、調用及觸發事件,提升程式碼的可維護性和互動性。
Thumbnail
2025/11/28
本篇分享 Kivy 的 ColorProperty(顏色屬性),說明其與變數的差異,以及如何在 Python 和 Kivy Language (kv) 中應用。透過實際範例,展示如何設定顏色、觸發事件,並解答為何使用屬性而非變數。
Thumbnail
2025/11/28
本篇分享 Kivy 的 ColorProperty(顏色屬性),說明其與變數的差異,以及如何在 Python 和 Kivy Language (kv) 中應用。透過實際範例,展示如何設定顏色、觸發事件,並解答為何使用屬性而非變數。
Thumbnail
2025/11/20
本篇文章探討 Kivy 框架中的 NumericProperty,並透過實例學習如何宣告屬性,並利用屬性變動觸發函式,實現使用者介面的動態更新。
Thumbnail
2025/11/20
本篇文章探討 Kivy 框架中的 NumericProperty,並透過實例學習如何宣告屬性,並利用屬性變動觸發函式,實現使用者介面的動態更新。
Thumbnail
看更多
你可能也想看
Thumbnail
Python資料視覺化在數據分析中扮演關鍵角色,透過視覺化捕捉數據模式、趨勢和異常,透過Matplotlib等工具創建專業圖表變相對簡單和高效。
Thumbnail
Python資料視覺化在數據分析中扮演關鍵角色,透過視覺化捕捉數據模式、趨勢和異常,透過Matplotlib等工具創建專業圖表變相對簡單和高效。
Thumbnail
介紹如何用assign函數在Python中建立新欄位
Thumbnail
介紹如何用assign函數在Python中建立新欄位
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
INI 檔案是一種配置檔案格式,常用於保存設定資料和組態資訊。 它使用簡單的鍵值對結構來組織資料,通常用於程式、應用程式或操作系統中的配置和初始化設定。 INI 檔案每個鍵值對包含一個名稱(鍵)和對應的值。 基本的檔案格式如下: [Section1] Key1 = Value1 Key2 =
Thumbnail
INI 檔案是一種配置檔案格式,常用於保存設定資料和組態資訊。 它使用簡單的鍵值對結構來組織資料,通常用於程式、應用程式或操作系統中的配置和初始化設定。 INI 檔案每個鍵值對包含一個名稱(鍵)和對應的值。 基本的檔案格式如下: [Section1] Key1 = Value1 Key2 =
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News