vocus logo

方格子 vocus

【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
艾肯比工程師
4會員
75內容數
主要分享應用程式開發過程、遭遇困難及解決技巧,提供給自學或獨立開發者做為參考,希望能對您們有所幫助。
艾肯比工程師的其他內容
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
vocus 慶祝推出 App,舉辦 2026 全站慶。推出精選內容與數位商品折扣,訂單免費與紅包抽獎、新註冊會員專屬活動、Boba Boost 贊助抽紅包,以及全站徵文,並邀請你一起來回顧過去的一年, vocus 與創作者共同留下了哪些精彩創作。
Thumbnail
vocus 慶祝推出 App,舉辦 2026 全站慶。推出精選內容與數位商品折扣,訂單免費與紅包抽獎、新註冊會員專屬活動、Boba Boost 贊助抽紅包,以及全站徵文,並邀請你一起來回顧過去的一年, vocus 與創作者共同留下了哪些精彩創作。
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
今天來分享一個好像有點廢的小技巧 把網頁變成可以直接用來打字的文字編輯器
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News