【kivy canvas】canvas.before 使用的時機|Kivy基礎用法

更新 發佈閱讀 6 分鐘


本篇開始:

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



【本篇說明】在kivy裡面,還有一些部件可用來建構使用者介面(UI),比如 canvas、canvas.before、DegreeButton等,這次要講的是 canvas.before,它的語法跟 canvas是相同,可以參考這篇:【kivy canvas】canvas(帆布) 基本使用語法,但是它的使用時機卻是有別於 canvas!

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

以下.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()

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

vocus|新世代的創作平台

▲說明:main.py程式碼


2.新增 kivy檔案,取名 main.kv,並且放在同資料夾內

vocus|新世代的創作平台


3.這邊延續上一篇,先加入 canvas基本內容

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

canvas:          
Color:
rgb: (117/255, 220/255, 141/255)
Rectangle:
size: self.size
pos: self.pos

▲說明:

1.canvas 字首'c'是小寫,主要分成兩種屬性(顏色及形狀)

2.Color 字首'C'是大寫,rgb: 顏色代碼

3.Rectangle 字首'R'是大寫,主要分成兩種屬性(大小及位置)

4.size:self.size,代表視窗本身大小

5.pos:self.pos,代表視窗本身位置


vocus|新世代的創作平台

▲說明:main.kv程式碼

vocus|新世代的創作平台

▲說明:執行python檔案,發現canvas佈滿整個視窗範圍


4.接下來本篇情境說明: 想要加入一段 Label文字,然後在文字底下使用 canvas凸顯文字

加入以下.kv程式碼:(首先是 Label部件內容)

Label: 
text:'Welcome to my app!'
font_size: 30
bold: True
color: 'white'
size_hint: .3, .3
pos_hint: {'center_x':.5, 'center_y':.7}

加入以下.kv程式碼:(再來是 canvas內容)

canvas:         
Color:
rgb: (0.1, 0.2, 0.3)
Rectangle:
size: 300, 200
pos: 350, 420

▲說明:

1.rgb: 使用小數來表示深藍色碼

2.size:大小為(300, 200)

3.pos:位置在(350, 420)


vocus|新世代的創作平台

▲說明:main.kv程式碼

這時執行python檔案,會出現錯誤訊息: canvas的加入必須在子部件(Label)之前宣告

vocus|新世代的創作平台


5.修正.kv程式碼的順序

vocus|新世代的創作平台

▲說明:修正後的 main.kv程式碼

再一次執行python檔案,雖然可以正常執行,但原本的 canvas被覆蓋掉了

vocus|新世代的創作平台

▲說明:部件的宣告有先後順序,後面宣告的 canvas(深藍)覆蓋掉前面的 canvas(亮綠),這個時候就該使用 canvas.before

6.加入 canvas.before

為了避免前面兩種情形發生,這邊分享兩種宣告的時機(方式):

1.改成在 Label部件裡面宣告

以下.kv程式碼:

canvas.before:         
Color:
rgb: (0.1, 0.2, 0.3)
Rectangle:
size: 300, 200
pos: 350, 420
vocus|新世代的創作平台

▲說明:修正後的 main.kv程式碼

2.也可以直接將第1個 canvas部件改成 canvas.before來宣告

vocus|新世代的創作平台

7.執行python檔案

vocus|新世代的創作平台

▲說明:前面的canvas(亮綠)沒有被覆蓋掉,這才是canvas.before 正常的呈現效果

本篇小結

經過以上宣告時機,可以發現 canvas.before的效果, 是在原有部件加入下一層的 canvas部件,增加層次感。


本篇結束:

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


留言
avatar-img
艾肯比工程師
4會員
77內容數
主要分享應用程式開發過程、遭遇困難及解決技巧,提供給自學或獨立開發者做為參考,希望能對您們有所幫助。
艾肯比工程師的其他內容
2025/09/02
canvas,中文翻譯為"帆布",或可稱呼"帆布背景",是很常用的部件之一,本篇分享改變顏色、大小和位置等語法,並附上完整的程式碼範例與圖解說明。
Thumbnail
2025/09/02
canvas,中文翻譯為"帆布",或可稱呼"帆布背景",是很常用的部件之一,本篇分享改變顏色、大小和位置等語法,並附上完整的程式碼範例與圖解說明。
Thumbnail
2025/08/25
kivy language(kv),主要用來分離 Python程式碼及使用者介面(UI)的佈局,本篇分享2種使用kivy language的方式。
Thumbnail
2025/08/25
kivy language(kv),主要用來分離 Python程式碼及使用者介面(UI)的佈局,本篇分享2種使用kivy language的方式。
Thumbnail
2025/08/18
Button在kivy裡面,是很常用的物件(widget)之一,中文稱為按鈕,以下介紹固定常用的語法,包含設定文字內容、大小、位置及顏色,並提供完整程式碼範例和說明。
Thumbnail
2025/08/18
Button在kivy裡面,是很常用的物件(widget)之一,中文稱為按鈕,以下介紹固定常用的語法,包含設定文字內容、大小、位置及顏色,並提供完整程式碼範例和說明。
Thumbnail
看更多
你可能也想看
Thumbnail
Python資料視覺化在數據分析中扮演關鍵角色,透過視覺化捕捉數據模式、趨勢和異常,透過Matplotlib等工具創建專業圖表變相對簡單和高效。
Thumbnail
Python資料視覺化在數據分析中扮演關鍵角色,透過視覺化捕捉數據模式、趨勢和異常,透過Matplotlib等工具創建專業圖表變相對簡單和高效。
Thumbnail
Python是一種易學且功能強大的程式語言,具有直譯、動態語法等特性,並擁有豐富的標準庫。它在各領域如Web開發、數據科學和人工智慧等得到廣泛應用,並被許多大公司如Google和Facebook等使用。Python還有強大的框架、豐富的交互機能、和龐大的社區。
Thumbnail
Python是一種易學且功能強大的程式語言,具有直譯、動態語法等特性,並擁有豐富的標準庫。它在各領域如Web開發、數據科學和人工智慧等得到廣泛應用,並被許多大公司如Google和Facebook等使用。Python還有強大的框架、豐富的交互機能、和龐大的社區。
Thumbnail
本文在介紹如何用Python繪製各點大小不同的散布圖及用箭頭標註特殊點
Thumbnail
本文在介紹如何用Python繪製各點大小不同的散布圖及用箭頭標註特殊點
Thumbnail
背景:從冷門配角到市場主線,算力與電力被重新定價   小P從2008進入股市,每一個時期的投資亮點都不同,記得2009蘋果手機剛上市,當時蘋果只要在媒體上提到哪一間供應鏈,隔天股價就有驚人的表現,當時光學鏡頭非常熱門,因為手機第一次搭上鏡頭可以拍照,也造就傳統相機廠的殞落,如今手機已經全面普及,題
Thumbnail
背景:從冷門配角到市場主線,算力與電力被重新定價   小P從2008進入股市,每一個時期的投資亮點都不同,記得2009蘋果手機剛上市,當時蘋果只要在媒體上提到哪一間供應鏈,隔天股價就有驚人的表現,當時光學鏡頭非常熱門,因為手機第一次搭上鏡頭可以拍照,也造就傳統相機廠的殞落,如今手機已經全面普及,題
Thumbnail
這是一場修復文化與重建精神的儀式,觀眾不需要完全看懂《遊林驚夢:巧遇Hagay》,但你能感受心與土地團聚的渴望,也不急著在此處釐清或定義什麼,但你的在場感受,就是一條線索,關於如何找著自己的路徑、自己的聲音。
Thumbnail
這是一場修復文化與重建精神的儀式,觀眾不需要完全看懂《遊林驚夢:巧遇Hagay》,但你能感受心與土地團聚的渴望,也不急著在此處釐清或定義什麼,但你的在場感受,就是一條線索,關於如何找著自己的路徑、自己的聲音。
Thumbnail
本文將說明如何去辨識出圖片文字​位置及高寬。
Thumbnail
本文將說明如何去辨識出圖片文字​位置及高寬。
Thumbnail
5 月將於臺北表演藝術中心映演的「2026 北藝嚴選」《海妲・蓋柏樂》,由臺灣劇團「晃晃跨幅町」製作,本文將以從舞台符號、聲音與表演調度切入,討論海妲・蓋柏樂在父權社會結構下的困境,並結合榮格心理學與馮.法蘭茲對「阿尼姆斯」與「永恆少年」原型的分析,理解女人何以走向精神性的操控、毀滅與死亡。
Thumbnail
5 月將於臺北表演藝術中心映演的「2026 北藝嚴選」《海妲・蓋柏樂》,由臺灣劇團「晃晃跨幅町」製作,本文將以從舞台符號、聲音與表演調度切入,討論海妲・蓋柏樂在父權社會結構下的困境,並結合榮格心理學與馮.法蘭茲對「阿尼姆斯」與「永恆少年」原型的分析,理解女人何以走向精神性的操控、毀滅與死亡。
Thumbnail
本文分析導演巴里・柯斯基(Barrie Kosky)如何運用極簡的舞臺配置,將布萊希特(Bertolt Brecht)的「疏離效果」轉化為視覺奇觀與黑色幽默,探討《三便士歌劇》在當代劇場中的新詮釋,並藉由舞臺、燈光、服裝、音樂等多方面,分析該作如何在保留批判核心的同時,觸及觀眾的觀看位置與人性幽微。
Thumbnail
本文分析導演巴里・柯斯基(Barrie Kosky)如何運用極簡的舞臺配置,將布萊希特(Bertolt Brecht)的「疏離效果」轉化為視覺奇觀與黑色幽默,探討《三便士歌劇》在當代劇場中的新詮釋,並藉由舞臺、燈光、服裝、音樂等多方面,分析該作如何在保留批判核心的同時,觸及觀眾的觀看位置與人性幽微。
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News