在 Kivy 中创建一个简单的绘图应用

2025 年 1 月 8 日 | 阅读时间:6 分钟

什么是 Kivy?

Kivy 是一个平台,提供用于创建不同应用程序的 GUI 工具,这些应用程序可以在 Android、IOS、Windows 和各种其他平台上制作。它主要用于构建 Android 应用程序,但也用于制作交互式和有趣的桌面应用程序。

问题陈述

在这里,我们将使用 kivy 框架制作一个简单的绘图应用程序,在该应用程序中,我们可以绘制线条、形状等等。此应用程序将类似于绘图应用程序,我们可以在其中绘制图像。

易于使用的 Kivy 绘图应用程序 API 允许您通过选择在屏幕或画布上使用画笔进行绘图来创建绘图应用程序。首先,我们将构建一个画布和一个画笔,您可以使用它通过移动光标来创建线条,就像一个绘画应用程序一样。

创建简单绘图应用程序的方法

  1. 导入库,包括
    • Kivy
    • Kivy 应用程序
    • Widget
    • 来自 kivy.graphics 的 Rectangle
  2. 根据需要创建 widget 类
  3. 创建布局类,这将定义我们应用程序的布局和功能
  4. 创建应用程序类(App)
  5. 使用所有类和布局运行该类的实例。

绘图应用程序的实现

让我们开始绘图应用程序的实现。

首先,我们将制作一个简单的画布,然后,我们将添加 widget 和布局。

编码

输出

[INFO   ] [Logger      ] Record log in C:\Users\javatpoint\.kivy\logs\kivy_23-08-31_12.txt
[INFO   ] [deps        ] Successfully imported "kivy_deps.angle" 0.3.3
[INFO   ] [deps        ] Successfully imported "kivy_deps.glew" 0.3.1
[INFO   ] [deps        ] Successfully imported "kivy_deps.sdl2" 0.6.0
[INFO   ] [Kivy        ] v2.2.1
[INFO   ] [Kivy        ] Installed at "C:\Users\javatpoint\AppData\Roaming\Python\Python39\site-packages\kivy\__init__.py"
[INFO   ] [Python      ] v3.9.2 (tags/v3.9.2:1a79785, Feb 19 2021, 13:44:55) [MSC v.1928 64 bit (AMD64)]
[INFO   ] [Python      ] Interpreter at "C:\Program Files\Python39\python.exe"
[INFO   ] [Logger      ] Purge log fired. Processing...
[INFO   ] [Logger      ] Purge finished!
[INFO   ] [Factory     ] 190 symbols loaded
[INFO   ] [Image       ] Providers: img_tex, img_dds, img_sdl2, img_pil (img_ffpyplayer ignored)
[INFO   ] [Window      ] Provider: sdl2
[INFO   ] [GL          ] Using the "OpenGL" graphics system
[INFO   ] [GL          ] GLEW initialization succeeded
[INFO   ] [GL          ] Backend used <glew>
[INFO   ] [GL          ] OpenGL version <b'4.5.0 - Build 23.20.16.4973'>
[INFO   ] [GL          ] OpenGL vendor <b'Intel'>
[INFO   ] [GL          ] OpenGL renderer <b'Intel(R) HD Graphics 520'>
[INFO   ] [GL          ] OpenGL parsed version: 4, 5
[INFO   ] [GL          ] Shading version <b'4.50 - Build 23.20.16.4973'>
[INFO   ] [GL          ] Texture max size <16384>
[INFO   ] [GL          ] Texture max units <32>
[INFO   ] [Window      ] auto add sdl2 input provider
[INFO   ] [Window      ] virtual keyboard not allowed, single mode, not docked
[INFO   ] [Base        ] Start application main loop
[INFO   ] [Base        ] Leaving application in progress...

Creating a Simple Drawing App in kivy

说明

首先,我们导入了所有库,然后创建了一个类 Touch(),它具有用于制作画布的基本功能和 widget。然后,我们添加了作为输出,您将看到一个黑色屏幕,屏幕的角落有一个矩形,其尺寸为 (40, 40),这是我们在函数中决定的。

将不同颜色的不同形状添加到画布

编码

输出

Creating a Simple Drawing App in kivy

说明

使用 kivy.graphics 库,我们制作了不同位置的不同颜色不同形状。通过更改颜色和位置值,我们借助 Rectangle 函数制作了两个不同颜色和大小的矩形,它们位于不同的位置。每种颜色都有不同的颜色代码。然后,我们使用 Ellipse 函数添加了一个椭圆

通过触摸光标移动形状

编码

输出

Creating a Simple Drawing App in kivy

说明

在此,我们可以通过触摸画布或沿任何方向移动光标来移动我们的形状。我们定义了三个触摸函数(on_touch_down、on_touch_move、on_touch_up),在其中我们调用了形状对象,以便在每次我们触摸画布屏幕时移动形状。

在画布中添加线条

编码

输出

Creating a Simple Drawing App in kivy

说明

我们使用 kivy.graphics 的 Line 模块在画布屏幕中添加了一条线。我们可以通过更改参数的点来更改线条的颜色和位置。也可以通过再次调用线条对象来添加多条线。

添加画笔

我们将添加一个画笔,通过它我们可以通过移动光标来绘制图像。

绘图屏幕的画布(带有椭圆的线条)

编码

输出

Creating a Simple Drawing App in kivy

说明

我们将画笔添加到了画布上。使用它,我们可以进行不同的绘图。在此代码中,我们添加了带有线条的椭圆;当我们用光标触摸画布屏幕时,如输出所示,它将首先给出一个椭圆,然后通过拖动它,我们可以得到线条。

使用光标绘图的画布

编码

输出

Creating a Simple Drawing App in kivy

说明

使用此画笔,我们可以在屏幕上书写或通过在屏幕上移动光标来绘制图形。输出显示我们拖动光标来书写和绘制图像。