如何在 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