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

更新 發佈閱讀 6 分鐘


本篇開始:

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

【本篇說明】在kivy裡面,屬性(property)有分很多種,比如 NumericProperty、ColorProperty、ObjectProperty、BooleanProperty 等等,今天要分享的是 NumericProperty (中文翻譯為"數值屬性"),專門存放 int、float,通常屬性會在創建的類別中宣告使用,同時也可提供其他類別來調用。

首先在main.py寫下固定的程式碼

以下.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程式碼

將屬性及函式寫入 Python檔案

1.以下 main.py程式碼:

from kivy.properties import NumericProperty, ObjectProperty

▲說明:導入所需的屬性。ObjectProperty是為了本篇展示用的,其他篇會再說明

2.改寫 firstlayout類別內容

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

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

def on_a1(self, instance, value):
print("a1屬性值被改變了,為:", value)
self.a2.font_size = value

▲說明:

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

2.宣告 a2為None的ObjectProperty

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

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

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

6.另列印出 a1屬性值來確認,看看是否每次增加57.讓 a2的 font_size參數等於 value,使 Label部件中的字體大小隨著增加


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: str(root.a1)
font_size: 10

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


▲說明:

1.a2:b2,讓 a2等於 b2,在kivy要使用分號":",不同於python使用等號"="

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

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

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



raw-image

▲說明:main.kv程式碼


執行 Python檔案

raw-image
raw-image

▲說明:每當按下 Button時,屬性值改變了,觸發函式會使 Label字體變大

raw-image

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


本篇小結

透過不同類型的屬性,當屬性發生改變,就能同時觸發函式。

本篇結束:

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


留言
avatar-img
留言分享你的想法!
avatar-img
艾肯比工程師
3會員
63內容數
主要分享應用程式開發過程、遭遇困難及解決技巧,提供給自學或獨立開發者做為參考,希望能對您們有所幫助。
艾肯比工程師的其他內容
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
2025/10/28
本篇文章介紹 TextInput部件,是可以在裡面輸入任何字串,簡單來說就是"文字輸入視窗",並示範如何在 Python 和 Kivy中設定 TextInput,包括字串輸入、文字對齊、字體大小與垂直大小調整。
Thumbnail
2025/10/28
本篇文章介紹 TextInput部件,是可以在裡面輸入任何字串,簡單來說就是"文字輸入視窗",並示範如何在 Python 和 Kivy中設定 TextInput,包括字串輸入、文字對齊、字體大小與垂直大小調整。
Thumbnail
看更多