Kivy - 行为



在 Kivy 中,“kivy.uix.behaviors” 模块定义了行为混合器,也称为“可重用类”,它们为小部件提供了额外的功能。它们封装了常见的功能,可以与多个小部件混合使用以扩展其行为。

  • 行为有助于保持代码模块化、可重用和可维护。它们允许您为标准 Kivy 小部件定义自己的实现,这些实现可以作为直接替换。

  • 行为混合器的一个应用是使用图像作为按钮。我们可以定义一个扩展 ButtonBehavior 的自定义类,使其响应“on_press”或“on_touch”等事件,以便图像本身可以像按钮一样工作。本章稍后我们将查看将图像转换为按钮的示例。

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

ButtonBehavior

此行为为小部件提供了类似按钮的功能。它添加了诸如按下/释放视觉反馈、自动触发“on_press”和“on_release”事件以及处理触摸事件等功能。

它经常与 Button、ToggleButton 或需要类似按钮行为的自定义小部件一起使用。

DragBehavior

此行为类允许通过触摸输入拖动和移动小部件。它处理诸如 on_touch_down、on_touch_move 和 on_touch_up 等触摸事件以实现拖动功能。

它可用于在您的应用程序中创建可拖动的小部件。

FocusBehavior

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

它可用于实现键盘导航并在应用程序中管理焦点遍历。

SelectableBehavior

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

它经常与 ListView、RecycleView 或需要选择功能的自定义小部件一起使用。

ButtonBehavior 示例

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

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() 方法返回其对象。

这是 **可运行代码**。您可以保存并运行它:

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()

输出

运行上述程序。它将在其中心显示带有图像的 Kivy 窗口:

Kivy Behaviors

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

Button pressed
广告