鼠標|高手過招不用鼠標,一款超好用的跨平臺命令行界面庫

鼠標|高手過招不用鼠標,一款超好用的跨平臺命令行界面庫

文章圖片

鼠標|高手過招不用鼠標,一款超好用的跨平臺命令行界面庫

文章圖片

鼠標|高手過招不用鼠標,一款超好用的跨平臺命令行界面庫

文章圖片

鼠標|高手過招不用鼠標,一款超好用的跨平臺命令行界面庫

文章圖片

鼠標|高手過招不用鼠標,一款超好用的跨平臺命令行界面庫

文章圖片

鼠標|高手過招不用鼠標,一款超好用的跨平臺命令行界面庫

文章圖片

鼠標|高手過招不用鼠標,一款超好用的跨平臺命令行界面庫

命令行工具是程序員的秘密武器 , 它們安裝簡單、啟動速度快、界面簡潔 , 一條指令或者快捷鍵即可完成操作 , 用完即走深藏不露 。
而最趁手的莫過于自己親手打造的!本期 《講解開源項目》 就介紹一個讓你快速擁有完美命令行界面的跨平臺庫——tui.rs
你一定有過這樣的糾結:我的程序需要一個界面 , 但使用諸如 Qt 等框架又比較繁瑣 。 現在 tui.rs 來了 , 它是 Rust 下的命令行 UI 庫 , 不僅上手方便內置多種組件 , 而且效果炫酷支持跨平臺使用 。
輕松實現一份代碼可以無縫運行在 Linux/Windows/Mac 之上!
接下來你不僅可以快速上手 tui.rs , 還會收獲多款基于它構建的神兵利器!
一、安裝tui.rs 采用 Rust 語言編寫 , 和所有其他 Rust 依賴的安裝方法一樣 , 直接在 cargo.toml 中添加依賴即可:
[dependencies
tui = \"0.17\"
crossterm = \"0.22\"
如果需要官方示例 , 則直接 clone 官方倉庫:

二、快速入門2.1 一覽芳容我們主要使用 tui.rs 提供的以下模塊進行 UI 編寫(所有 UI 元素都實現了 Widget 或 StatefuWidget Trait):

  • bakend 用于生成管理命令行的后端
  • layout 用于管理 UI 組件的布局
  • style 用于為 UI 添加樣式
  • symbols 描述繪制散點圖時所用點的樣式
  • text 用于描述帶樣式的文本
  • widgets 包含預定義的 UI 組件
如下代碼就可以實現一個很簡單的 tui 界面:
這些代碼可能看起來不少 , 但大部分都是固定的模板 , 不需要我們每次的重新構思 。 下面 , 就讓我們來詳細了解其中的細節 。
2.2 創作模板官方通過 example 給出了使用 tui.rs 進行設計的模板 , 我希望各位讀者在使用時也能遵守這套模板以保證程序的可讀性 。
一個使用 tui.rs 程序的一生大概是這樣的:
其模塊可以大致分為:
  • app.rs 實現 App 結構體 , 用于處理 UI 邏輯 , 保存 UI 狀態
  • ui.rs 實現 UI 渲染功能
但對于小型程序來講 , 也可以都寫在 main.rs 之中 。
首先來看開始和結束部分關于 Terminal 的操作 , 每次運行都會保存原始 Terminal 界面內容并在一個新的窗體上運行 , 在結束后又會恢復到原來的 Terminal 窗體中 , 有效地防止了搞亂原來的窗口內容 。 這部分代碼模板官方已經給出 , 基本無需修改:

接下來是處理 UI 邏輯的 run_app 函數 , 我們在此處理諸如 用戶按鍵、UI 狀態更改等邏輯

對于功能簡單的界面來講 , 這個函數作用不大 。 但如果我們的程序需要更新一些組件狀態(比如列表選中項、用戶輸入、外界數據交互等)則應在此統一處理 。

相關經驗推薦