Python GUI 开发利器——Kivy 库详解与实战入门

Python GUI 开发利器——Kivy 库详解与实战入门

目录

一、前言

在 Python 的生态中,除了常见的 TkinterPyQtwxPython 之外,还有一个相对小众但非常强大的 GUI 框架——Kivy

Kivy 不仅支持 Windows、Linux、macOS,还可以直接打包到 Android 和 iOS,实现真正的“一套代码多端运行”。

如果你想用 Python 做一个桌面工具、移动端 App 或者交互式界面,Kivy 是一个非常值得尝试的框架


二、Kivy 简介

✅ 1. 官方简介

Kivy 是一个用于快速开发多点触控应用的开源 Python 框架。
它基于 OpenGL ES2,使用自定义的渲染引擎,拥有现代化的界面与动画系统。

项目地址

✅ 2. 框架特性

特性说明
📱 跨平台一套代码可运行于 Windows / macOS / Linux / Android / iOS
🧩 模块化内置丰富的控件(Button、Label、Slider、Layout等)
🎨 高度可定制可使用 KV 语言定义界面结构与样式
🎬 动画友好支持动画、手势、多点触控等交互
🪶 轻量高效基于 OpenGL 渲染,性能良好

三、安装与环境配置

Kivy 的安装方式非常简单,推荐使用 pip

pip install kivy 

如果你需要支持音频、视频等多媒体功能,可安装完整版本:

pip install"kivy[base,media]"

验证是否安装成功:

python -m kivy 

若输出类似以下内容,说明安装成功:

[INFO ] [Kivy ] v2.x.x [INFO ] [Python ] v3.x.x 

四、第一个 Kivy 程序:Hello World 👋

下面我们来写一个最经典的 “Hello World” 界面程序。

🧾 示例代码:main.py

from kivy.app import App from kivy.uix.label import Label classMyApp(App):defbuild(self):return Label(text="Hello, Kivy!", font_size=40)if __name__ =="__main__": MyApp().run()

运行后,会弹出一个窗口,界面上显示一行文字 “Hello, Kivy!”


五、使用 KV 语言定义界面

Kivy 提供了一种类似 XML 的 KV 语言,用于定义界面布局,让 UI 与逻辑分离,结构更清晰。

🧩 目录结构示例

project/ │ ├── main.py └── myapp.kv 

💻 main.py

from kivy.app import App from kivy.uix.boxlayout import BoxLayout classMyLayout(BoxLayout):passclassMyApp(App):passif __name__ =='__main__': MyApp().run()

🎨 myapp.kv

<MyLayout>: orientation: "vertical" padding: 20 spacing: 10 Label: text: "Kivy 界面示例" font_size: 32 Button: text: "点击我" on_press: app.on_button_click() <MyApp>: MyLayout: 

App 类中,你还可以添加逻辑:

classMyApp(App):defon_button_click(self):print("按钮被点击了!")

六、Kivy 的常用控件

控件名功能
Label显示文本
Button按钮
TextInput文本输入框
Image显示图片
Slider滑块
BoxLayout / GridLayout / AnchorLayout布局容器
ScreenManager多页面切换

七、典型应用场景

场景说明
🎮 游戏原型开发快速实现 2D 游戏界面与交互
🧰 桌面工具写一些跨平台的桌面小工具(如下载器、转换器)
📱 移动端应用打包成 APK 或 IPA,用于 Android / iOS
🧠 教育与数据可视化做交互式教学软件或图形展示工具
🎛️ 硬件交互界面用于树莓派、触摸屏控制系统等 IoT 应用

八、打包与发布

Kivy 支持多平台打包:

  • Windows / macOS / Linux
    使用 PyInstallerBriefcase
  • iOS
    使用 Kivy iOS 构建工具。

Android
使用官方工具 Buildozer

pip install buildozer buildozer init buildozer -v android debug 

九、总结

Kivy 是一个非常独特的 Python GUI 框架:

  • 不依赖原生控件
  • 拥有独立的渲染与布局系统
  • 能让 Python 程序一键上移动端

虽然它在企业级桌面开发中不如 PyQt 常见,但对于想尝试 快速原型、移动端实验项目、教育软件 的开发者来说,是一个极具创造力的选择。

Read more

llama.cpp + llama-server 的安装部署验证

飞桨AI Studio星河社区-人工智能学习与实训社区 用的是 魔塔的免费资源 不太稳定 我的Notebook · 魔搭社区 cat /etc/os-release  Ubuntu 22.04.5 LTS (Jammy Jellyfish) —— 这是一个长期支持(LTS)且完全受支持的现代 Linux 发行版,非常适合部署 llama.cpp + llama-server。Ubuntu 22.04 自带较新的 GCC(11+)、CMake(3.22+)和 Python 3.10+,无需手动升级工具链,部署过程非常顺畅。 一、安装系统依赖 sudo apt update sudo apt install -y

By Ne0inhk
【HarmonyOS 6.0】Media Kit:细粒度控制屏幕捕获,详解图像填充模式C API

【HarmonyOS 6.0】Media Kit:细粒度控制屏幕捕获,详解图像填充模式C API

文章目录 * 1 -> 概述:从“能录”到“录得好”——Media Kit的战略性升级 * 2 -> 基础概念:理解屏幕捕获中的“画布”与“填充” * 2.1 -> 捕获源与目标区域 * 2.2 -> 矛盾的焦点:宽高比不一致 * 2.3 -> 填充模式 (`OH_AVScreenCapture_FillMode`) * 3 -> API详解:设置捕获策略的完整链路 * 3.1 -> 核心数据结构:`OH_AVScreenCapture_

By Ne0inhk
Flutter for OpenHarmony: Flutter 三方库 talker_bloc_logger 深度洞察鸿蒙应用中的每一条 BLoC 状态流转(状态审计神器)

Flutter for OpenHarmony: Flutter 三方库 talker_bloc_logger 深度洞察鸿蒙应用中的每一条 BLoC 状态流转(状态审计神器)

欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.ZEEKLOG.net 前言 在进行基于 BLoC (Business Logic Component) 架构的 OpenHarmony 应用开发时,随着业务逻辑的膨胀,我们面临最头疼的问题就是: 1. 这个 Event 是什么时候发出的? 2. State 为什么突然跳变到了 Error? 3. 这个 Transition 转换过程中带了哪些参数? talker_bloc_logger 是 Talker 日志生态中专门针对 BLoC 的超级补丁。它通过一行代码就能接管整个系统的 BLoC 观察器,将枯燥的控制台信息转化为漂亮的、结构化的全屏审计流。 一、BLoC 状态观测流模型 该库通过拦截 BLoC 的全局观察器接口,自动格式化并转发所有状态变更。 Event / Transition

By Ne0inhk
鸿蒙金融理财全栈项目——合规审计、风险控制、产品创新优化

鸿蒙金融理财全栈项目——合规审计、风险控制、产品创新优化

《鸿蒙APP开发从入门到精通》第21篇:鸿蒙金融理财全栈项目——合规审计、风险控制、产品创新优化 📊🛡️🚀 内容承接与核心价值 这是《鸿蒙APP开发从入门到精通》的第21篇——合规审计、风险控制、产品创新优化篇,100%承接第20篇的运维监控、性能优化、安全加固架构,并基于金融场景的合规审计、风险控制、产品创新要求,设计并实现鸿蒙金融理财全栈项目的合规审计、风险控制、产品创新优化功能。 学习目标: * 掌握鸿蒙金融理财项目的合规审计优化设计与实现; * 实现合规审计自动化、合规审计报告优化、合规审计风险预警; * 理解风险控制优化在金融场景的核心设计与实现; * 实现风险评估自动化、风险监控实时化、风险预警智能化; * 掌握产品创新优化在金融场景的设计与实现; * 实现产品创新敏捷化、产品创新数据化、产品创新生态化; * 优化金融理财项目的用户体验(合规审计、风险控制、产品创新优化)。 学习重点: * 鸿蒙金融理财项目的合规审计优化设计原则; * 风险控制优化在金融场景的应用; * 产品创新优化在金融场景的设计要点。 一、 合规审计优化基础

By Ne0inhk