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 - Line

在 Kivy 库中,"Line"是"kivy.graphics"模块中的一个重要顶点指令。在 Kivy 中,所有绘图都在与任何可用小部件相关联的 Canvas 上完成。Line 指令绘制一条线或一系列线以及其他形状,如矩形、椭圆、贝塞尔等。

必须注意,Kivy 绘图指令并不自动相对于小部件的位置或大小。相反,所有小部件的画布共享一个公共坐标空间。

Line 函数需要一个数值列表。数字的解释取决于此列表所分配到的参数。List 函数的参数是点、矩形、椭圆、贝塞尔等。

绘制矩形

语法

您可以使用以下语法使用 Line 函数绘制矩形 −

with self.canvas:
   Line(rectangle=[x, y, w, h], width)

此处,"x"和"y"代表矩形的左下角位置,"w"和"h"代表宽度和高度。该线自动闭合。

您还可以使用 rounded_rectangle 属性来构建具有圆角的矩形。参数必须是以下形式之一的元组 −

  • (x, y, width, height, corner_radius)

  • (x, y, width, height, corner_radius,resolution)

  • (x, y, width, height, corner_radius1, corner_radius2, corner_radius3, corner_radius4)

  • (x, y, width, height, corner_radius1, corner_radius2, corner_radius3, corner_radius4,resolution)

示例

from kivy.app import App
from kivy.uix.widget import Widget
from kivy.graphics import *
from kivy.core.window import Window

Window.size = (720,300)

class drawRectangle(App):
   def build(self):
      widget = Widget()
      with widget.canvas:
         Color(1, 0, 1, 1)
         Line(
            rectangle=(50, 50, 300, 200),
            width=3
         )
         Line(rounded_rectangle=(500, 200, 300, 200, 20, 20, 20, 20))
      return widget
drawRectangle().run()

输出

它将产生以下输出窗口 −

Kivy Line

绘制椭圆

您需要为 Line 指令的椭圆属性分配一个数值列表。椭圆参数的值必须是以下元组

(x, y, width, height, angle_start, angle_end, periods)

其中,

  • "x"和"y"代表椭圆的左下角

  • "width"和"height"代表椭圆的大小。如果这两个值相同,结果将是一个圆

  • "angle_start"和"angle_end"以度为单位。默认值为 0 和 360。

  • "segments"是椭圆的精度。您可以使用此属性创建具有 3 条或更多边的多边形。小于 3 的值将不会显示。

示例

在下面的代码中,Line 指令用于使用不同的参数绘制椭圆 −

from kivy.app import App
from kivy.uix.widget import Widget
from kivy.graphics import *
from kivy.core.window import Window

Window.size = (720,400)

class drawEllipse(App):
   def build(self):
      widget = Widget()

      with widget.canvas:
         Color(0.5, .2, 0.4, 1)
         Line(ellipse=(500, 70, 200, 200), width=4)
         Line(ellipse=(100, 200, 100, 200), width=4)
         Color(.2, .8, 0, 1)
         Line(ellipse=(200, 100, 200, 100), width=4)
         Line(ellipse=(500, 300, 250, 90, 45, 270), width=3)

         Color(.1, .8, .3, 1)
         Line(ellipse=(200, 400, 200, 80, 180, 420, 30), width=5)

      return widget

drawEllipse().run()

输出

Kivy Line Ellipse

绘制贝塞尔曲线

贝塞尔曲线由一些控制点加权,我们将其包含在指令中。Line() 函数接受贝塞尔参数,该参数将传递一组 (x,y) 坐标对。参数必须是 2n 个元素的列表,"n"是点的数量。

with self.canvas:
   Line(bezier=[x1, y1, x2, y2, x5, y3], width)

请注意,Line 指令函数的 points 参数也接收一组类似的 2n 个元素。points 属性在连续的点之间绘制一条线。

with self.canvas:
   Line(points=[x1, y1, x2, y2, x5, y3], width)

Line 指令的 point 参数仅绘制与每个 x-y 坐标对相对应的点,而不绘制连接它们的任何线。

with self.canvas:
   Line(point=[x1, y1, x2, y2, x5, y3], width)

示例

以下代码使用同一组"x"和坐标对仅绘制点、线和贝塞尔线 −

from kivy.app import App
from kivy.uix.widget import Widget
from kivy.graphics import *
from kivy.core.window import Window

Window.size = (720, 400)

class drawBezier(App):
   def build(self):
      widget = Widget()
      
      with widget.canvas:
         Color(0, 1, 1, 1)
         Bezier(
            points=[700, 400, 450, 300, 300, 350, 350, 200, 200, 100, 150, 10],
            segments=20
         )
         Color(1, 1, 0, 1)
         Point(
            points=[700, 400, 450, 300, 300, 350, 350, 200, 200, 100, 150, 10],
            pointsize=5
         )

         Color(.1, .1, .8)
         Line(
            points=[700, 400, 450, 300, 300, 350, 350, 200, 200, 100, 150, 10],
            pointsize=3
         )
      return widget
      
drawBezier().run()

输出

运行此代码时,它将生成一个输出窗口,如下所示 −

Kivy 绘制贝塞尔曲线

请注意,Kivy 提供了另一组顶点指令,使用矩形、椭圆形、贝塞尔指令来绘制这些形状。这些与 Line 指令的矩形、椭圆形和贝塞尔参数不同。

请注意指令本身和参数(椭圆指令与 Line 指令的椭圆形参数)的首字母大写。Line 函数无需重新计算点即可绘制形状。