Python 如何在Kivymd-Python中创建复选框

Python 如何在Kivymd-Python中创建复选框

复选框是一种图形用户界面(GUI)元素。它使用户能够从给定的选择集中选择1个或多个选项。它们通常以小方框的形式表示,可以被选中(选中)或取消选中(不选中)。根据使用情况,复选框通常呈正方形,并且几乎出现在互联网上的所有表单中。

Python的 KivyMD 框架是建立在Kivy库之上的,它允许开发人员构建跨平台应用程序以及GUI。KivyMD包含一组大量的Material Design小部件,可以与目前的手机和桌面应用程序集成。

在本文中,我们将看到如何在Python中使用KivyMD创建复选框。有两种方法可以实现,我们将分别看到每个方法。

MDCheckbox 小部件在 KivyMD 中提供了许多自定义选项,从更改复选框的颜色到指定其大小和位置。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. 在启动/复选框未选中时

Python 如何在Kivymd-Python中创建复选框

2. 当复选框被选中时

Python 如何在Kivymd-Python中创建复选框

方法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. 在开始/当复选框未被选中时

Python 如何在Kivymd-Python中创建复选框

2. 当复选框被选中时

Python 如何在Kivymd-Python中创建复选框

结论

KivyMD库对于使用小部件设计跨平台应用程序非常有帮助。MDCheckbox小部件允许我们向用户界面添加复选框,通过active属性可以轻松判断复选框是否被选中。复选框的外观可以通过active_color和secondary_color等属性进行自定义。可以将大量的功能和任务与active属性整合使用。上面展示了两种创建复选框的方法,其中一种需要使用KV语言,另一种则直接通过代码编写。KV语言是一种简单的标记语言,就像XML用于Android和HTML用于网站一样。复选框在表单中经常被使用,例如谷歌表单和职位申请表,它们主要是正方形的,可以同时选择一个或多个。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程