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

更新 發佈閱讀 8 分鐘


本篇開始:

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



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

StringProperty 在中文翻譯為"字串屬性",是專門用來存放"字串",預設值為""(空字串),通常屬性會在類別中宣告使用,不同於"變數"宣告,變數只能存放數字、字串以及布林值。

以下使用基本語法:

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 StringProperty

▲說明:導入屬性StringProperty

2.改寫 firstlayout類別內容

class firstlayout(FloatLayout):
mode = StringProperty("minus")
degree = StringProperty("easy")

▲說明:

1.宣告屬性 mode,將字串 "minus"存入

2.宣告屬性 degree,將字串 "easy"存入

3.以上兩個屬性,為了待會調用其他類別屬性而展示


raw-image

▲說明:main.py程式碼

3.創建 seconflayout類別內容

class secondlayout(FloatLayout):
how_to_play = StringProperty()
mode = firstlayout.mode
degree = firstlayout.degree

def update_label(self):
self.how_to_play = f"Welcome~\n you choose mode is [{self.mode}]\n you choose degree is [{self.degree}]"

def on_how_to_play(self, instance, value):
print("how_to_play屬性值改變了,為:", value)

▲說明:

1.創建類別,取名叫 secondlayout()

2.宣告屬性 how_to_play,預設值為""(空字串)

3.宣告屬性 mode,將調用的 firstlayout.mode屬性值存入,調用語法為【類別名稱.屬性名稱】

4.宣告屬性 degree,將調用的 firstlayout.degree屬性值存入,調用語法為【類別名稱.屬性名稱】

5.定義函式 update_label,()裡面加入 self

6.使本身的 how_to_play屬性值為以上格式化字串內容,其中 {self.mode}、{self.degree}為本身兩個 mode、degree屬性值

7.這時,how_to_play屬性值已不是原先的"",屬性特有的觸發事件,當屬性值發生改變時,就能觸發函式,命名時必須是on_加上 how_to_play

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

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


raw-image

▲說明:main.py程式碼

4.別忘了要改成回傳 secondlayout()

return secondlayout()
raw-image


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

raw-image

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


4.寫入 main.kv程式碼

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

<secondlayout>:    
Button:
text: 'show instructions'
size_hint: .2, .2
pos: 400, 50
on_press: root.update_label()

Label:
text:root.how_to_play
font_size: 20
bold: True
size_hint: .3, .3
pos_hint: {'center_x':.5, 'center_y':.7}

▲說明:

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

2.Button,當按下時,呼叫函式 update_label()

3.Label,使 text參數為 root根物件(也就是類別 secondlayout)的 how_to_play屬性值



raw-image

▲說明:main.kv程式碼


5.執行 Python檔案

raw-image

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

raw-image

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

6.本篇小結

雖然"變數"跟"字串屬性"都可存入字串,不過透過【調用屬性方式】,就可以運用別個類別的屬性值,在程式碼維護也會比較方便。


本篇結束:

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


留言
avatar-img
艾肯比工程師
4會員
77內容數
主要分享應用程式開發過程、遭遇困難及解決技巧,提供給自學或獨立開發者做為參考,希望能對您們有所幫助。
艾肯比工程師的其他內容
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
2025/11/13
本篇文章延續 Kivy TextInput 物件的基本介紹,如何利用觸發函式 ,實現將使用者輸入的文字即時顯示在 Label 元件中的進階功能。
Thumbnail
2025/11/13
本篇文章延續 Kivy TextInput 物件的基本介紹,如何利用觸發函式 ,實現將使用者輸入的文字即時顯示在 Label 元件中的進階功能。
Thumbnail
看更多
你可能也想看
Thumbnail
創作不只是個人戰,在 vocus ,也可以是一場集體冒險、組隊升級。最具代表性的創作者社群「vocus 野格團」,現在有了更強大的新夥伴加入!除了大家熟悉的「官方主題沙龍」,這次我們徵召了 8 位領域各異的「個人主題專家」,將再度嘗試創作的各種可能,和格友們激發出更多未知的火花。
Thumbnail
創作不只是個人戰,在 vocus ,也可以是一場集體冒險、組隊升級。最具代表性的創作者社群「vocus 野格團」,現在有了更強大的新夥伴加入!除了大家熟悉的「官方主題沙龍」,這次我們徵召了 8 位領域各異的「個人主題專家」,將再度嘗試創作的各種可能,和格友們激發出更多未知的火花。
Thumbnail
看完上篇 4 位新成員的靈魂拷問,是不是意猶未盡?別急,野格團新血的驚喜正接著登場!今天下篇接力的另外 4 位「個人主題專家」,戰力同樣驚人──領域從旅行美食、運動、商業投資到自我成長;這些人如何維持長跑般的創作動力?在爆紅的文章背後,又藏著哪些不為人知的洞察?5 大靈魂拷問繼續出擊
Thumbnail
看完上篇 4 位新成員的靈魂拷問,是不是意猶未盡?別急,野格團新血的驚喜正接著登場!今天下篇接力的另外 4 位「個人主題專家」,戰力同樣驚人──領域從旅行美食、運動、商業投資到自我成長;這些人如何維持長跑般的創作動力?在爆紅的文章背後,又藏著哪些不為人知的洞察?5 大靈魂拷問繼續出擊
Thumbnail
在 Python 中,print( ) 函數用於將結果輸出到螢幕上。當你嘗試將不同資料型別(例如字串和數字)混合在一起輸出時,print( )函數無法直接處理這些不同型別的資料,因此你需要先將它們轉換為相同的資料型別。通常,這意味著需要將數字轉換為字串型別,以便與其他字串一同輸出。 雖然我們也可以
Thumbnail
在 Python 中,print( ) 函數用於將結果輸出到螢幕上。當你嘗試將不同資料型別(例如字串和數字)混合在一起輸出時,print( )函數無法直接處理這些不同型別的資料,因此你需要先將它們轉換為相同的資料型別。通常,這意味著需要將數字轉換為字串型別,以便與其他字串一同輸出。 雖然我們也可以
Thumbnail
Python資料視覺化在數據分析中扮演關鍵角色,透過視覺化捕捉數據模式、趨勢和異常,透過Matplotlib等工具創建專業圖表變相對簡單和高效。
Thumbnail
Python資料視覺化在數據分析中扮演關鍵角色,透過視覺化捕捉數據模式、趨勢和異常,透過Matplotlib等工具創建專業圖表變相對簡單和高效。
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 =
Thumbnail
f字符串(f-string)在Python 3.6版本引入了新特性,可以更方便地格式化字符串。本文介紹了f-string的基本使用方法,以及表達式、運算符、格式化控制、字典和列表的應用,以及調用方法和函數等。f-string提供了一種更靈活的方式,使你能夠控制字符串的外觀,以滿足不同情況下的需求。
Thumbnail
f字符串(f-string)在Python 3.6版本引入了新特性,可以更方便地格式化字符串。本文介紹了f-string的基本使用方法,以及表達式、運算符、格式化控制、字典和列表的應用,以及調用方法和函數等。f-string提供了一種更靈活的方式,使你能夠控制字符串的外觀,以滿足不同情況下的需求。
Thumbnail
在 Python 中,dir() 函式用於列舉對象的所有屬性和方法。這包括對象的內建屬性、方法以及自定義的屬性和方法。以下是一個簡單的示例: 列舉所有屬性與方法 class MyClass: def __init__(self): self.attribute1 = 42
Thumbnail
在 Python 中,dir() 函式用於列舉對象的所有屬性和方法。這包括對象的內建屬性、方法以及自定義的屬性和方法。以下是一個簡單的示例: 列舉所有屬性與方法 class MyClass: def __init__(self): self.attribute1 = 42
Thumbnail
前幾篇討論到各種裝飾器的用法,本文將介紹另外一種裝飾器,可以將方法轉換成屬性來使用。 property也可以動態的取出物件的值,隨著時間或其他運算改變所產生的值,讓我們繼續往下看更多介紹吧。
Thumbnail
前幾篇討論到各種裝飾器的用法,本文將介紹另外一種裝飾器,可以將方法轉換成屬性來使用。 property也可以動態的取出物件的值,隨著時間或其他運算改變所產生的值,讓我們繼續往下看更多介紹吧。
Thumbnail
本文介紹了Python中函式引數的*args和**kwargs用法,通過*args處理可變數量的位置引數,通過**kwargs處理可變數量的關鍵字引數。不僅介紹了相應的語法和程式範例,還解釋了它們的順序問題和建議的慣例用法。
Thumbnail
本文介紹了Python中函式引數的*args和**kwargs用法,通過*args處理可變數量的位置引數,通過**kwargs處理可變數量的關鍵字引數。不僅介紹了相應的語法和程式範例,還解釋了它們的順序問題和建議的慣例用法。
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News