- Kivy 教程
- Kivy - 首頁
- Kivy 基礎
- Kivy - 入門
- Kivy - 安裝
- Kivy - 架構
- Kivy - 檔案語法
- Kivy - 應用
- Kivy - Hello World
- Kivy - 應用生命週期
- Kivy - 事件
- Kivy - 屬性
- Kivy - 輸入
- Kivy - 行為
- Kivy 按鈕
- Kivy - 按鈕
- Kivy - 按鈕事件
- Kivy - 按鈕顏色
- Kivy - 按鈕大小
- Kivy - 按鈕位置
- Kivy - 圓形按鈕
- Kivy - 停用按鈕
- Kivy - 圖片按鈕
- Kivy 元件
- Kivy - 元件
- Kivy - 標籤
- Kivy - 文字輸入
- Kivy - 畫布
- Kivy - 線
- Kivy - 複選框
- Kivy - 下拉列表
- Kivy - 視窗
- Kivy - 滾動檢視
- Kivy - 輪播
- Kivy - 滑塊
- Kivy - 圖片
- Kivy - 彈出視窗
- Kivy - 開關
- Kivy - 微調器
- Kivy - 分隔器
- Kivy - 進度條
- Kivy - 氣泡
- Kivy - 標籤面板
- Kivy - 散點圖
- Kivy - 手風琴
- Kivy - 檔案選擇器
- Kivy - 顏色選擇器
- Kivy - 程式碼輸入
- Kivy - 模態檢視
- Kivy - 切換按鈕
- Kivy - 攝像頭
- Kivy - 樹檢視
- Kivy - reStructuredText
- Kivy - 動作欄
- Kivy - 影片播放器
- Kivy - 模板檢視
- Kivy - 虛擬鍵盤
- Kivy - 觸控漣漪
- Kivy - 音訊
- Kivy - 影片
- Kivy - 拼寫檢查
- Kivy - 效果
- Kivy - 輸入記錄器
- Kivy - OpenGL
- Kivy - 文字
- Kivy - 文字標記
- Kivy - 設定
- Kivy 佈局
- Kivy - 佈局
- Kivy - 浮動佈局
- Kivy - 網格佈局
- Kivy - 箱式佈局
- Kivy - 堆疊佈局
- Kivy - 錨點佈局
- Kivy - 相對佈局
- Kivy - 分頁佈局
- Kivy - 回收佈局
- Kivy - 佈局巢狀
- Kivy 高階概念
- Kivy - 配置物件
- Kivy - 圖集
- Kivy - 資料載入器
- Kivy - 快取管理器
- Kivy - 控制檯
- Kivy - 動畫
- Kivy - 多筆畫
- Kivy - 時鐘
- Kivy - SVG
- Kivy - UrlRequest
- Kivy - 剪貼簿
- Kivy - 工廠
- Kivy - 手勢
- Kivy - 語言
- Kivy - 圖形
- Kivy - 繪圖
- Kivy - 打包
- Kivy - Garden
- Kivy - 儲存
- Kivy - 向量
- Kivy - 工具
- Kivy - 檢查器
- Kivy - 工具
- Kivy - 日誌記錄器
- Kivy - 幀緩衝區
- Kivy 應用和專案
- Kivy - 繪圖應用
- Kivy - 計算器應用
- Kivy - 計時器應用
- Kivy - 攝像頭處理
- Kivy - 圖片檢視器
- Kivy - 貝塞爾曲線
- Kivy - 畫布壓力測試
- Kivy - 圓形繪製
- Kivy - 元件動畫
- Kivy - 其他
- Kivy 有用資源
- Kivy - 快速指南
- Kivy - 有用資源
- Kivy - 討論
Kivy - 圓形按鈕
Kivy 框架中的所有元件都是矩形的。按鈕物件始終具有直角。因此,建立具有圓角的按鈕沒有直接的解決方案,但是我們可以透過一些技巧來實現它。
使用影像作為按鈕
我們可以定義一個擴充套件 ButtonBehavior mixin 和 Image 類的類。使用任何照片編輯器,建立一個看起來像圓形按鈕的橢圓形形狀,並將其用作 Image 物件的 source 屬性。
您可以覆蓋 ButtonBehavior 類的 on_press() 方法,該方法允許將影像用作按鈕。
from kivy.uix.behaviors import ButtonBehavior
from kivy.uix.image import Image
class imgbtn(ButtonBehavior, Image):
def __init__(self, **kwargs):
super(imgbtn, self).__init__(**kwargs)
self.source = 'hello.png'
self.pos_hint= {'center_x':.5, 'center_y':.6}
def on_press(self):
print("Button pressed")
我們現在可以在 Kivy 應用中使用 imgbtn 物件。
KivyMD 按鈕
使用 KivyMD 擴充套件,我們可以設計更具吸引力的介面。KivyMD 是一個材料設計元件的集合,用於 Kivy 應用。KivyMD 庫提供了具有圓角的不同按鈕物件。
- MDRoundFlatButton
- MDRoundFlatIconButton
- MDFillRoundFlatButton
- MDFillRoundFlatIconButton
首先,安裝 KivyMD 擴充套件(確保事先安裝了 Kivy 框架)
pip3 install KivyMD
App 類必須是 MDApp 類的子類,而不是 App 類。在這個例子中,我們將使用 MDRoundFlatButton 類。它的許多屬性與 Kivy Button 相同。
from kivymd.app import MDApp
from kivymd.uix.button import MDRoundFlatButton
btn = MDRoundFlatButton(
text= 'Hello Python',
font_size= 20,
size_hint= (.3, .1),
pos_hint= {'center_x':.5, 'center_y':.3},
line_width=3
)
示例
在下面的例子中,我們有一個 MDApp 類。build() 方法將一個圖片按鈕和一個 MDRoundButton 物件放在應用程式視窗中。
from kivymd.app import MDApp
from kivy.core.window import Window
from kivy.uix.floatlayout import FloatLayout
from kivy.uix.image import Image
from kivy.uix.behaviors import ButtonBehavior
from kivymd.uix.button import MDRoundFlatButton
Window.size = (720, 300)
class imgbtn(ButtonBehavior, Image):
def __init__(self, **kwargs):
super(imgbtn, self).__init__(**kwargs)
self.source = 'btnnormal.png'
self.pos_hint= {'center_x':.5, 'center_y':.6}
def on_press(self):
print("Button pressed")
class ButtonApp(MDApp):
def build(self):
flo = FloatLayout()
self.btn1 = imgbtn()
self.btn2 = MDRoundFlatButton(
text= 'Hello Python',
font_size= 20, size_hint= (.3, .1),
pos_hint= {'center_x':.5, 'center_y':.3},
line_width=3
)
flo.add_widget(self.btn1)
flo.add_widget(self.btn2)
return flo
if __name__ == '__main__':
ButtonApp().run()
輸出
執行應用程式。您應該得到以下輸出,其中包含圓角按鈕。
使用畫布
在 Kivy 中,畫布是元件繪製的根物件。為了模擬標籤作為圓形按鈕的工作方式,我們定義一個擴充套件 ButtonBehavior 和 Label 的類。“kv”檔案定義了此物件的結構如下:
<RoundCorneredButton>:
canvas:
Color:
rgb: (1, 0, 0, 1) if self.state == 'normal' else (0, 0, 0, 1)
RoundedRectangle:
size: (self.size)
pos: (self.pos)
radius: [200, ]
on_release:
print("This is the button made up by the canvas")
類的定義如下:
class RoundCorneredButton(ButtonBehavior, Label): pass
示例
我們將在下面的 App 程式碼中使用上面的類和 kv 設計:
from kivy.app import App
from kivy.uix.label import Label
from kivy.config import Config
from kivy.uix.button import ButtonBehavior
from kivy.graphics import Rectangle, Color
# Configuration
Config.set('graphics', 'width', '720')
Config.set('graphics', 'height', '300')
Config.set('graphics', 'resizable', '1')
from kivy.app import App
class RoundCorneredButton(ButtonBehavior, Label):
pass
class HelloApp(App):
def build(self):
return RoundCorneredButton()
HelloApp().run()
輸出
現在執行程式碼。您將得到一個具有圓形形狀的按鈕,如下所示:
廣告