软件|高手过招不用鼠标,一款超好用的跨平台命令行界面库( 二 )


之后 , 我们会使用 terminal.draw() 方法绘制界面 , 其接受一个闭包:

在这里 , 有如下流程:

  1. 使用Layout 按照需求给定 Constraint 切分窗体 , 获取 chunks , 每个 chunk 也可以利用 Layout 继续进行分割
  2. 实例化组件 , 每个组件都实现了default 方法 , 在使用时我们应该先使用 xxx::default() 获取默认对象 , 再利用默认对象更新组件样式 。 例如 Block::default().borders(Borders::ALL) 、Style::default().bg(Color::White) 等 。 这也是官方推荐做法 。
  3. 使用f.render_widget 渲染组件到窗体上 , 对于类似 列表 等存在状态(比如当前选中元素)的组件 , 则使用 f.render_stateful_widget 进行渲染
关于 tui.rs 其他内置组件的使用方法 , 可以查看官方的 example 文件 , 编写套路是一样的 , 可以根据需要直接复制粘贴 。
需要注意到是 , 在此我们只关心 UI 组件的显示方式和内容 , 有关程序逻辑的内容应放在 run_app 中处理以免打乱程序架构或影响 UI 绘制效果(你总不希望 UI 绘制到一半的时候因为进行了某些 IO 操作而卡住了对吧?)
到这里对于 tui.rs 的介绍就结束了 , 实际上使用 tui.rs 编写 UI 界面很简单 , 只要根据创作模板结合官方例子一步步构建 , 任何人都可以很快上手 。
三、更多实用工具下面将介绍介绍几款基于 tui.rs 构建的流行开源项目 , 它们无一例外是命令行工具里的“神兵利器“!
3.1 实时股票数据支持查看不同时间维度以及交易量等数据 , 股票实时数据来自雅虎 。
地址:tarkah/tickrs
3.2 文件传输工具支持 SCP/SFTP/FTP/S3 功能丰富的终端文件传输工具 。
地址:veeso/termscp
3.3 网络监控工具用于按进程、连接、远程 IP、主机名显示当前网络利用率 。
地址:imsnif/bandwhich
限于篇幅这里就不介绍其它开源项目了 , 感兴趣的小伙伴可以去项目首页寻找 。
四、最后以上就是本文的所有内容 , 希望您从中有所收获 。
最后 , 感谢您的阅读和陪伴!!!
这里是 HelloGitHub 分享 GitHub 上有趣、入门级的开源项目 。 您的每个点赞、留言、分享都是对我们最大的鼓励!