如何在 Kivymd-Python 中建立複選框?
複選框是一種圖形使用者介面 (GUI) 元素。它允許使用者從給定的一組選項中選擇一個或多個選項。它們通常以小方框的形式呈現,可以選中(選擇)或取消選中(取消選擇)。根據使用場景,複選框通常呈方形,並且幾乎存在於網際網路上的所有表單中。
Python 的KivyMD框架構建在 Kivy 庫之上,允許開發人員構建跨平臺應用程式以及 GUI。KivyMD 包含大量 Material Design 小部件,可以與當今的移動和桌面應用程式整合。
在本文中,我們將瞭解如何在 Python 中的 KivyMD 中建立複選框。主要有兩種方法,我們將分別介紹每一種。
KivyMD中的MDCheckbox小部件提供了大量的自定義選項,從更改複選框的顏色到指定其大小和位置。'on_active' 事件非常有用,可以檢查複選框是否選中或取消選中,並允許我們對選中狀態的變化做出任何響應。
複選框非常易於使用,併為使用者提供了一種快速的選擇方法,從而提高了清晰度。它們之所以靈活高效,是因為它們可以用於任何情況,包括表單、調查問卷和調查表。
但是,複選框可能會佔用表單上的大量空間,在某些情況下可能會使視覺效果雜亂。建議不要新增太多選項供使用者選擇,因為使用者可能會不知所措,難以做出決定。複選框僅允許二進位制(是/否)型別的響應,這限制了收集的資訊量,並且在某些情況下不適用。
在繼續之前,有必要安裝某些庫,因為它們不是標準庫軟體包的一部分。它們包括 kivy 和 kivymd,其安裝命令如下所示
pip install kivy pip install kivymd
方法 1:使用自定義 MyBoxLayout 類
在這裡,我們將建立一個擴充套件 BoxLayout 類的 MyBoxLayout。我們還將新增一個文字欄位小部件,以指示何時選中複選框以及何時未選中複選框。為此,我們將使用 'on_active' 屬性。
MyBoxLayout 類包含一個 MDCheckbox 小部件和一個 MDLabel 小部件,後者是一個文字欄位,用於指示覆選框的狀態。BoxLayout 定義為水平方向。
示例
# Import necessary modules
from kivymd.app import MDApp
from kivymd.uix.selectioncontrol import MDCheckbox
from kivymd.uix.label import MDLabel
from kivy.uix.boxlayout import BoxLayout
class MyBoxLayout(BoxLayout):
def __init__(self, **kwargs):
super().__init__(**kwargs)
self.orientation = 'horizontal'
self.checkbox_box = BoxLayout()
self.checkbox = MDCheckbox()
self.checkbox_box.add_widget(self.checkbox)
self.textbox = MDLabel()
# Default state of checkbox is inactive/unselected
self.textbox.text="Checkbox is inactive"
self.checkbox_box.add_widget(self.textbox)
self.add_widget(self.checkbox_box)
self.checkbox.bind(active=self.on_checkbox_active)
def on_checkbox_active(self, checkbox, value):
if value:
self.textbox.text = "Checkbox is active"
else:
self.textbox.text = "Checkbox is inactive"
# Create the app
class TutorialsPointApp(MDApp):
def build(self):
return MyBoxLayout()
if __name__ == '__main__':
TutorialsPointApp().run()
輸出
1. 啟動時/複選框未選中時

2. 選中複選框時

方法 2:使用 KV 語言
KV 語言通常用於在 Kivy 框架中設計佈局和使用者介面。它也被稱為宣告式語言,這意味著您可以定義 UI 的結構和小部件的行為,而無需編寫程式碼來手動設計它們。語法與其他標記語言(如 XML 或 HTML)非常相似,這些語言也用於類似目的。藉助 KV 語言,您可以定義小部件的佈局、大小、位置、樣式和行為。KV 語言支援繼承這一事實是一個很大的優勢,因為我們可以建立一個基本小部件,然後只需更改一些屬性即可建立它的變體。
現在,此KV 語言可以像下面所示一樣以字串的形式寫在同一程式碼中,也可以以外部檔案的形式編寫,該檔案需要匯入。無論哪種方式,輸出或任何功能都不會發生變化。
為了編譯 KV 語言,我們需要“Builder”,我們將字串傳遞給它。
與上面一樣,我們也將在此程式碼中列印複選框的狀態。
示例
from kivy.lang import Builder
from kivymd.app import MDApp
from kivy.properties import BooleanProperty
# Define KV language string
KV = '''
Screen:
MDCheckbox:
id: checkbox
size_hint: None, None
size: dp(48), dp(48)
pos_hint: {'center_x': 0.5, 'center_y': 0.5}
on_active: app.update_label(self.active)
MDLabel:
id: label
text: 'Checkbox is inactive'
halign: 'center'
valign: 'center'
pos_hint: {'center_x': 0.5, 'center_y': 0.3}
'''
class TutorialsPointApp(MDApp):
checkbox_active = BooleanProperty(False)
def build(self):
# Load the KV language string
self.root = Builder.load_string(KV)
return self.root
def update_label(self, active):
# Update the label text based on the checkbox state
self.root.ids.label.text = 'Checkbox is ' + ('active' if active else 'inactive')
if __name__ == '__main__':
TutorialsPointApp().run()
輸出
1. 啟動時/複選框未選中時

2. 選中複選框時

結論
KivyMD 庫對於使用小部件設計跨平臺應用程式非常有幫助。MDCheckbox 小部件允許我們將複選框新增到我們的 UI 中,並且 active 屬性可以輕鬆地用於檢視複選框是否已選中。可以透過使用 active_color 和 secondary_color 等屬性來自定義複選框的外觀。大量功能和任務可以與 active 屬性整合。我們上面展示了兩種建立複選框的方法,其中一種需要 KV 語言,另一種則直接藉助程式碼實現。KV 語言是一種簡單的標記語言,就像 Android 的 XML 和網站的 HTML 一樣。複選框在 Google 表單和工作申請等表單中非常常用,主要呈方形,並且允許同時選擇一個或多個選項。
資料結構
網路
關係型資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP