Kivy 简明教程

Kivy - Behaviors

在 Kivy 中,“kivy.uix.behaviors”模块会定义行为混合,行为混合也被称作“可重复使用类”,可为小组件提供其他功能。它们包含通用功能,且可以与多个小组件混合以扩展其行为。

  1. 行为有助于保持代码的模块化、可重复使用和可维护。通过它们,您可以为可作为直接替代项的标准 kivy 小组件定义自己的实现。

  2. 行为混合的应用程序之一是可以将图像用作按钮。我们可以定义一个扩展 ButtonBehavior 的自定义类,以便对其做出诸如“on_press”或“on_touch”之类的事件的响应,从而使图像本身可以作为按钮。在本章后面,我们将了解如何将图像转换成按钮的示例。

“kivy.uix.behaviors”模块定义了多种混合。下面解释了其中一些最常用的类:

ButtonBehavior

此行为向小组件提供类按钮的功能。它添加了以下功能:按压/释放视觉反馈、“on_press”和“on_release”事件的自动触发,以及对触摸事件的处理。

它通常用于需要类按钮的行为的小组件,例如按钮、切换按钮或自定义小组件。

DragBehavior

此行为类允许小组件通过触摸输入进行拖动和移动。它处理触摸事件,例如 on_touch_down、on_touch_move 和 on_touch_up 以实施拖放功能。

它对在您的应用程序中创建可拖动小组件非常有用。

FocusBehavior

此行为提供了在小组件之间管理焦点的支持。它允许小组件接收键盘输入和处理与焦点相关的事件。

它对实现键盘导航和管理应用程序内的焦点遍历非常有用。

SelectableBehavior

此行为向小组件添加了选择功能。它允许用户从一组可选小组件中选择一项或多项。它处理选择状态、视觉反馈和与选择相关的事件的触发。

它通常用于需要选择功能的小组件,例如 ListView、RecycleView 或自定义小组件。

ButtonBehavior Example

我们现在将开发一个 Kivy 程序来实现 ButtonBehavior。我们在 Kivy 窗口上使用 Kivy 的 Image 对象来显示图像。但若要添加类按钮的行为,我们首先定义一个自定义类,该类既扩展 Image 类,又扩展 ButtonBehavior 类,并将其称作 imgbtn。

Image 类的 source 属性被赋值为一个字符串,该字符串为指向图像文件的路径。然后,我们重写 on_press() 方法,如下所示:

from kivy.uix.image import Image
from kivy.uix.behaviors import ButtonBehavior

class imgbtn(ButtonBehavior, Image):
   def __init__(self, **kwargs):
      super(imgbtn, self).__init__(**kwargs)
      self.source = 'Logo.jpg'

   def on_press(self):
      print("Button pressed")

这之后,定义了 imgbtn 类。让 App 类的 build() 方法返回它的对象。

以下是 ready-to-run code 。你可以保存并运行它:

from kivy.app import App
from kivy.uix.image import Image
from kivy.uix.behaviors import ButtonBehavior
from kivy.config import Config

# Configuration
Config.set('graphics', 'width', '720')
Config.set('graphics', 'height', '400')
Config.set('graphics', 'resizable', '1')

class imgbtn(ButtonBehavior, Image):
   def __init__(self, **kwargs):
      super(imgbtn, self).__init__(**kwargs)
      self.source = 'Logo.jpg'

   def on_press(self):
      print("Button pressed")

class ImageApp(App):
   def build(self):
      return imgbtn()

if __name__ == '__main__':
   ImageApp().run()

Output

运行以上程序。它将在中心显示一张图像的 Kivy 窗口:

kivy behaviors

注意图像本身充当按钮。为了测试,单击图像,它将在控制台上打印以下消息:

Button pressed