Kivy 教程

Kivy 主页

Kivy 基础知识

Kivy 入门 Kivy 下载安装和环境配置 Kivy 架构 Kivy 文件语法 Kivy 应用程序 Kivy Hello World Kivy 应用生命周期 Kivy 事件 Kivy 属性 Kivy 输入 Kivy 行为

Kivy 按钮

Kivy 按钮 Kivy 按钮事件 Kivy 按钮颜色 Kivy 按钮大小 Kivy 按钮位置 Kivy 圆形按钮 Kivy 禁用按钮 Kivy 图片按钮

Kivy 小部件

Kivy -小部件 Kivy 标签 Kivy 文本输入 Kivy 画布 Kivy 线条 Kivy 复选框 Kivy 下拉列表 Kivy 窗口 Kivy ScrollView Kivy 轮播 Kivy 滑块 Kivy 图像 Kivy 弹出窗口 Kivy 开关 Kivy 旋转器 Kivy 拆分器 Kivy 进度条 Kivy 气泡 Kivy 选项卡式面板 Kivy 散点图 Kivy 手风琴 Kivy 文件选择器 Kivy 颜色选择器 Kivy 代码输入 Kivy 模态视图 Kivy 切换按钮 Kivy 相机 Kivy 树形视图 Kivy reStructuredText Kivy 操作栏 Kivy 视频播放器 Kivy 模板视图 Kivy VKeyboard Kivy 触摸涟漪 Kivy 音频 Kivy 视频 Kivy 拼写 Kivy 效果 Kivy 输入记录器 Kivy OpenGL Kivy 文本 Kivy 文本标记 Kivy 设置

Kivy 布局

Kivy 布局 Kivy 浮动布局 Kivy 网格布局 Kivy 框布局 Kivy 堆栈布局 Kivy 锚点布局 Kivy 相对布局 Kivy 页面布局 Kivy 循环布局 Kivy 布局中的布局

Kivy 高级概念

Kivy 配置对象 Kivy Atlas Kivy 数据加载器 Kivy 缓存管理器 Kivy 控制台 Kivy 动画 Kivy MultiStroke Kivy 时钟 Kivy SVG Kivy UrlRequest Kivy 剪贴板 Kivy 工厂 Kivy 手势 Kivy 语言 Kivy 图形 Kivy 绘图 Kivy 打包 Kivy Garden Kivy 存储 Kivy 矢量 Kivy Utils Kivy Inspector 工具 Kivy 工具 Kivy 日志 Kivy 帧缓冲区

Kivy 应用程序和项目

Kivy 绘图应用程序 Kivy 计算器应用程序 Kivy 秒表应用程序 Kivy 相机处理 Kivy 图像查看器 Kivy 贝塞尔曲线 Kivy 画布应力 Kivy 圆形绘制 Kivy 小部件动画 Kivy 杂项

Kivy - behaviors(行为)

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

  • 行为有助于保持代码模块化、可重用和可维护。它们允许您为标准 kivy 小部件定义自己的实现,这些小部件可以充当插入式替代品。

  • 行为混合的应用之一可以是将图像用作按钮。我们可以定义一个自定义类来扩展 ButtonBehavior,使其响应"on_press"或"on_touch"等事件,这样图像本身就可以充当按钮。在本章后面,我们将查看将图像转换为按钮的示例。

"kivy.uix.behaviors"模块定义了几个 mixin。下面将解释一些最常用的类 −

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