
- 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
