关注公众号 “OpenSourceDaily” ,每天推荐给你优秀开源项目
大家好,我是欧盆索思(opensource),每天为你带来优秀的开源项目!
大家学习一门语言,想实战,做一些练习。如果能写出一个漂亮的 GUI 程序,感觉成就感满满。然而,Go 目前并没有特别成熟、好用的 GUI 库。那如果写控制台界面程序,能写出一些好看的界面吗?答案是肯定的。今天就为大家推荐一款这样的 Go 语言库,后续会介绍其他基于该库的有意思的工具。
这个库的名字叫:gocui,即 Go Console User Interface,项目地址:https://github.com/jroimartin/gocui,Star 数 6.3k+,被 233 个库导入使用。
特性
- 简洁的 API
- Views(对应 GUI 中的 “windows”)实现了 io.ReadWriter 接口
- 支持重叠视图
- 可以在运行时修改 GUI(并发安全)
- 全局和视图级别的键绑定
- 鼠标支持
- 彩色文字
- 可定制的编辑模式
- 易于构建可重用的小部件,复杂的布局等
安装
nbsp;go get github.com/jroimartin/gocui
国内用户建议加上 goproxy:
nbsp;go env -w GOPROXY=https://goproxy.cn,direct
示例
看一个具体的例子,代码如下:
package main
import (
"fmt"
"log"
"github.com/jroimartin/gocui"
)
func main() {
g, err := gocui.NewGui(gocui.OutputNormal)
if err != nil {
log.Panicln(err)
}
defer g.Close()
g.SetManagerFunc(layout)
if err := g.SetKeybinding("", gocui.KeyCtrlC, gocui.ModNone, quit); err != nil {
log.Panicln(err)
}
if err := g.MainLoop(); err != nil && err != gocui.ErrQuit {
log.Panicln(err)
}
}
func layout(g *gocui.Gui) error {
maxX, maxY := g.Size()
if v, err := g.SetView("hello", maxX/2-7, maxY/2, maxX/2+7, maxY/2+2); err != nil {
if err != gocui.ErrUnknownView {
return err
}
fmt.Fprintln(v, "Hello world!")
}
return nil
}
func quit(g *gocui.Gui, v *gocui.View) error {
return gocui.ErrQuit
}
运行,会在屏幕中间输出:
另一个例子截图:
官方还提供了很多其他例子,地址:https://github.com/jroimartin/gocui/tree/master/_examples。
今天的项目大家觉得怎么样吗?如果你喜欢,请在文章底部留言、点赞或关注转发,你的支持就是我持续更新的最大动力!