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 - 代码输入

Kivy 框架中的 CodeInput 小部件是一个专门的 TextInput 框,能够显示根据所选语言词法分析器的语法突出显示的可编辑文本。

CodeInput 小部件需要安装 pygments 包。

  • pygments 包是一个 Python 语法高亮器。

  • 它用于需要美化源代码的应用程序。

  • Pygments 支持几乎所有语言,包括编程、脚本语言,甚至能够根据框架和库语法提供语法高亮。

  • 支持以 Lexer 类的形式提供。例如,要获取用于突出显示语言元素的 Python 语法,我们需要导入 Python3Lexer,对于 C++ 代码,需要导入 CppLexer 类。具体来说,Kivy 代码使用 KivyLexer 突出显示。

如果您当前的工作环境未安装 pygments,请运行以下命令 −

pip3 install pygments

CodeInput 类在"kivy.uix.codeinput"模块中定义。

from kivy.uix.codeinput import CodeInput
codewidget = CodeInput(**kwargs)

CodeInput 类继承了 TextInput 类,以及 CodeNavigationBehaviou mixin。与 TextInput 对象一样,CodeInput 小部件是一个多行文本框,可以添加到其他布局类中。可以通过指定以下属性 − 来实例化它

  • lexer − 它保存 pygments 用于突出显示代码的选定 Lexer。它是一个 ObjectProperty,默认为 PythonLexer。

  • style − 用于格式化的 pygments 样式对象。设置 style_name 后,它将更改为相应的样式对象。

  • style_name − 用于格式化的 pygments 样式的名称。style_name 是一个 OptionProperty,默认为"default"。pygments 中有多种样式可用。一些示例是 emacs、xcode、vs、bw、colorful 等等。

除此之外,这些属性还继承自 TextInput 类。 CodeNavigationBehavior mixin 修改了 TextInput 中的导航行为,使其像 IDE 而不是文字处理器一样工作。

示例

在下面的代码中,CodeInput 小部件使用 PythonLexer 对 Python 源代码执行语法突出显示。使用 Python 的文件对象读取"code.py"文件,并将数据分配给 CodeInput 对象的文本属性。

from kivy.app import App
from kivy.uix.gridlayout import GridLayout
from kivy.uix.codeinput import CodeInput
from pygments.lexers.python import Python3Lexer
from kivy.uix.scrollview import ScrollView
from kivy.uix.codeinput import CodeInput
from kivy.core.window import Window

Window.size = (720,400)

class codeinputdemoapp(App):
   def build(self):
      scr = ScrollView(size=Window.size)
      codinp = CodeInput(style='emacs')
      codinp.height = max(codinp.minimum_height, scr.height)
      file=open('code.py')
      text=file.read()
      codinp.text=text
      scr.add_widget(codinp)
      return scrx

codeinputdemoapp().run()
Kivy 代码输入

要突出显示使用 Kivy 相关关键字和函数的代码,请加载 KivyLexer。您还可以尝试"颜料"样式,将其更改为"彩色"或任何可用样式。

from kivy.extras.highlight import KivyLexer

读取"kivycode.py"文件并将其加载到 CodeInput 框中。

file=open('kivycode.py')
text=file.read()
codinp.text=text
Kivy 代码输入文件

您还可以尝试使用 CppLexer − 显示 C++ 代码

from pygments.lexers.c_cpp import CppLexer

这次,将样式改为"friendly"。

file=open('test.cpp')
text=file.read()
codinp.text=text
kivy code CppLexer