【kivy RoundedButton】Button也可以改變形狀,使用 RoundedButton|Kivy基礎用法

更新 發佈閱讀 8 分鐘



本篇開始:

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



【本篇說明】今天要來介紹的是 RoundedButton,基本使用語法跟 Button是差不多的,還不知道的話,可以先參考這篇:【kivy Button】經常使用的Button(按鈕)語法。RoundedButton顧名思義,就是一個「圓角按鈕」


首先在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)

raw-image

▲說明:main.py程式碼


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

raw-image

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


這邊先加入 Button基本內容

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

Button:
text:'green light'
font_size: 20
bold: True
color: 'green'
size_hint: .2, .2
pos: 220, 50
background_normal: ''
background_color: 'lightgreen'
Button:
text:'yellow light'
font_size: 20
bold: True
color: 'yellow'
size_hint: .2, .2
pos: 400, 50
background_normal: ''
background_color: 'lightyellow'
Button:
text:'red light'
font_size: 20
bold: True
color: 'red'
size_hint: .2, .2
pos: 620, 50
background_normal: ''
background_color: 'pink'

▲說明:先使用3個 Button來展示

raw-image

▲說明:main.kv程式碼

raw-image

▲說明:執行python檔案,3個 Button預設形狀是矩形的


加入 RoundedButton基本內容

在 Button部件下面加入以下程式碼,且要注意要與<firstlayout>類別同階層,這樣才不會無效宣告

以下.kv程式碼:

<RoundedButton@Button>
background_normal: ''
background_color: (0,0,0,0)
canvas.before:
RoundedRectangle:
size: self.size
pos: self.pos
radius: [38]

▲說明:

1.宣告類別<RoundedButton@Button>

2.background_normal這兩段除了改變背景顏色外,最重要的是讓下面邊角產生改變,請務必加入這兩段,否則無效

raw-image

3.這邊使用canvas.before部件,如果不太清楚可以先看這篇:【kivy canvas】canvas.before 基本使用時機

4.RoundedRectangle:來製造有圓角的矩形

5.size、pos:等於部件本身的大小、位置

6.radius:用半徑為38像素(pixel)將邊角改成圓角,半徑越高會越趨近於橢圓形或圓形

7.【補充】我只將第三個 Button改成 RoundedButton來比較看看


raw-image

▲說明:main.kv程式碼

raw-image

▲說明:執行python檔案,發現沒什麼改變

仔細看會發現 RoundedButton部件裡面已經使用 background_normal: '',因此會影響<RoundedButton@Button> 裡面背景顏色的效果

改成以下.kv程式碼:(只需要把background_normal那兩段刪掉即可)

RoundedButton:
text:'red light'
font_size: 20
bold: True
color: 'red'
size_hint: .2, .2
pos: 620, 50
raw-image

執行python檔案

raw-image

▲說明:邊角形狀改變了,變成圓角了

【最後補充】

1.使用 RoundedButton雖然可以改成帶有圓角的矩形,但預設 Button部件按下去會有反色的效果就被 canvas.before覆蓋掉了

2.canvas.before如果改成 canvas的話,會發現 RoundedButton的文字會被覆蓋

3.如果這時想要改變 RoundedButton的背景顏色,可在 canvas.before裡面加入 Color屬性

4.radius:半徑越高會越趨近於橢圓形或圓形


以下.kv程式碼:(針對上面3.4項做展示)

<RoundedButton@Button>
background_normal: ''
background_color: (0,0,0,0)
canvas.before:
Color:
rgb:(.1,.1,.9)
RoundedRectangle:
size: self.size
pos: self.pos
radius: [150]
raw-image

▲說明:main.kv程式碼

raw-image


本篇小結

使用 RoundedButton,讓原先 Button變得更不一樣。

本篇結束:

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


留言
avatar-img
留言分享你的想法!
avatar-img
艾肯比工程師
2會員
55內容數
主要分享應用程式開發過程、遭遇困難及解決技巧,提供給自學或獨立開發者做為參考,希望能對您們有所幫助。
艾肯比工程師的其他內容
2025/09/08
canvas.before,它的語法跟 canvas是相同的,分享兩種使用的時機(方式)。
Thumbnail
2025/09/08
canvas.before,它的語法跟 canvas是相同的,分享兩種使用的時機(方式)。
Thumbnail
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
看更多
你可能也想看
Thumbnail
在小小的租屋房間裡,透過蝦皮購物平臺採購各種黏土、模型、美甲材料等創作素材,打造專屬黏土小宇宙的療癒過程。文中分享多個蝦皮挖寶地圖,並推薦蝦皮分潤計畫。
Thumbnail
在小小的租屋房間裡,透過蝦皮購物平臺採購各種黏土、模型、美甲材料等創作素材,打造專屬黏土小宇宙的療癒過程。文中分享多個蝦皮挖寶地圖,並推薦蝦皮分潤計畫。
Thumbnail
小蝸和小豬因購物習慣不同常起衝突,直到發現蝦皮分潤計畫,讓小豬的購物愛好產生價值,也讓小蝸開始欣賞另一半的興趣。想增加收入或改善伴侶間的購物觀念差異?讓蝦皮分潤計畫成為你們的神隊友吧!
Thumbnail
小蝸和小豬因購物習慣不同常起衝突,直到發現蝦皮分潤計畫,讓小豬的購物愛好產生價值,也讓小蝸開始欣賞另一半的興趣。想增加收入或改善伴侶間的購物觀念差異?讓蝦皮分潤計畫成為你們的神隊友吧!
Thumbnail
這篇教學教您如何在 Ren'py 中製作章節選擇畫面,提供素材下載以及變量設定的範例,並附加結合變量來控制章節解鎖的說明。
Thumbnail
這篇教學教您如何在 Ren'py 中製作章節選擇畫面,提供素材下載以及變量設定的範例,並附加結合變量來控制章節解鎖的說明。
Thumbnail
打開 jupyter notebook 寫一段 python 程式,可以完成五花八門的工作,這是玩程式最簡便的方式,其中可以獲得很多快樂,在現今這種資訊發達的時代,幾乎沒有門檻,只要願意,人人可享用。 下一步,希望程式可以隨時待命聽我吩咐,不想每次都要開電腦,啟動開發環境,只為完成一個重複性高
Thumbnail
打開 jupyter notebook 寫一段 python 程式,可以完成五花八門的工作,這是玩程式最簡便的方式,其中可以獲得很多快樂,在現今這種資訊發達的時代,幾乎沒有門檻,只要願意,人人可享用。 下一步,希望程式可以隨時待命聽我吩咐,不想每次都要開電腦,啟動開發環境,只為完成一個重複性高
Thumbnail
本篇教學會詳細介紹條 (Bar) 的基本特性,以及在 UI 畫面上的應用,如拖曳、調整大小、空格限制等。此外,教學也針對不同的造型特性進行解說,包括橫向或縱向條、拖曳圖示 (thumb) 調整,以及無法滑動時的隱藏或顯示設定。
Thumbnail
本篇教學會詳細介紹條 (Bar) 的基本特性,以及在 UI 畫面上的應用,如拖曳、調整大小、空格限制等。此外,教學也針對不同的造型特性進行解說,包括橫向或縱向條、拖曳圖示 (thumb) 調整,以及無法滑動時的隱藏或顯示設定。
Thumbnail
這是關於在 Renpy 中如何自訂 Frame 的教學,包括了建立畫面、在畫面裡面加入 frame、加入造型、加入內容、修正畫面、使用自訂 Frame 等內容。
Thumbnail
這是關於在 Renpy 中如何自訂 Frame 的教學,包括了建立畫面、在畫面裡面加入 frame、加入造型、加入內容、修正畫面、使用自訂 Frame 等內容。
Thumbnail
Anytype主要分為四區塊:目錄欄(Widget組成)、主編輯畫面、導航選單、設定區。
Thumbnail
Anytype主要分為四區塊:目錄欄(Widget組成)、主編輯畫面、導航選單、設定區。
Thumbnail
本篇教學將教你如何建立和使用 textbutton,讓你可以使用文字快速建立玩家可以點擊的按鈕,並提供瞭如何更改按鈕文字和自訂點擊按鈕後的動作。
Thumbnail
本篇教學將教你如何建立和使用 textbutton,讓你可以使用文字快速建立玩家可以點擊的按鈕,並提供瞭如何更改按鈕文字和自訂點擊按鈕後的動作。
Thumbnail
今天來分享一個好像有點廢的小技巧 把網頁變成可以直接用來打字的文字編輯器
Thumbnail
今天來分享一個好像有點廢的小技巧 把網頁變成可以直接用來打字的文字編輯器
Thumbnail
本課程學習如何修改按鈕外觀的方法,透過調整背景屬性和形狀。我們新增了四種背景顏色,修改每個按鈕的外觀。完成後,呈現不同按鈕風格。
Thumbnail
本課程學習如何修改按鈕外觀的方法,透過調整背景屬性和形狀。我們新增了四種背景顏色,修改每個按鈕的外觀。完成後,呈現不同按鈕風格。
Thumbnail
本課程學習如何提取共同屬性,透過 Style 樣式包,套用至每個按鈕。來提升佈局的可讀性和好維護性。
Thumbnail
本課程學習如何提取共同屬性,透過 Style 樣式包,套用至每個按鈕。來提升佈局的可讀性和好維護性。
Thumbnail
本課程學習如何如何實作計算機介面,佈局文字元件及按鈕。學習使用 LinearLayout 垂直排列元件,調整背景色。透過 GridLayout 佈局計算機按鈕。
Thumbnail
本課程學習如何如何實作計算機介面,佈局文字元件及按鈕。學習使用 LinearLayout 垂直排列元件,調整背景色。透過 GridLayout 佈局計算機按鈕。
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News