- 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 - 滚动视图
- 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 - 虚拟键盘
- 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 - 图集
- Kivy - 数据加载器
- Kivy - 缓存管理器
- Kivy - 控制台
- Kivy - 动画
- Kivy - 多笔画
- Kivy - 时钟
- Kivy - SVG
- Kivy - UrlRequest
- Kivy - 剪贴板
- Kivy - 工厂
- Kivy - 手势
- Kivy - 语言
- Kivy - 图形
- Kivy - 绘图
- Kivy - 打包
- Kivy - Garden
- Kivy - 存储
- Kivy - 矢量
- Kivy - 工具函数
- Kivy - 检查器
- Kivy - 工具
- Kivy - 日志记录器
- Kivy - 帧缓冲区
- Kivy 应用和项目
- 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 对象的 text 属性。
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 相关关键字和函数的代码,请加载 KivyLexer。您也可以尝试使用 "pigment" 样式,将其更改为 "colorful" 或任何其他可用样式。
from kivy.extras.highlight import KivyLexer
读取 "kivycode.py" 文件并将其加载到 CodeInput 框中。
file=open('kivycode.py') text=file.read() codinp.text=text
您也可以尝试使用 CppLexer 显示 C++ 代码:
from pygments.lexers.c_cpp import CppLexer
这次,将样式更改为 "friendly"。
file=open('test.cpp') text=file.read() codinp.text=text