您的位置 首页 golang

Go 没有好用的 GUI,那能不能有一个漂亮的 CUI 呢?

大家好,我是欧盆索思(opensource),每天为你带来优秀的开源项目!

大家学习一门语言,想实战,做一些练习。如果能写出一个漂亮的 GUI 程序,感觉成就感满满。然而,Go 目前并没有特别成熟、好用的 GUI 库。那如果写控制台界面程序,能写出一些好看的界面吗?答案是肯定的。今天就为大家推荐一款这样的 Go 语言库,后续会介绍其他基于该库的有意思的工具。

这个库的名字叫:go CUI ,即 Go Console User Interface,项目地址:https:// github . com /jroimartin/gocui,Star 数 6.3k+,被 233 个库导入使用。

特性

  • 简洁的 API
  • Views(对应 GUI 中的 “windows”)实现了 io .ReadWriter 接口
  • 支持重叠视图
  • 可以在运行时修改 GUI(并发安全)
  • 全局和视图级别的键绑定
  • 鼠标支持
  • 彩色文字
  • 可定制的编辑模式
  • 易于构建可重用的小部件,复杂的布局等

安装

 $ go get github.com/jroimartin/gocui
  

国内用户建议加上 goproxy:

 $ go env -w GOPROXY=
  

示例

看一个具体的例子,代码如下:

 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
}
  

运行,会在屏幕中间输出:

另一个例子截图:

官方还提供了很多其他例子,地址:。

今天的项目大家觉得怎么样吗?如果你喜欢,请在文章底部留言、点赞或关注转发,你的支持就是我持续更新的最大动力!

文章来源:智云一二三科技

文章标题:Go 没有好用的 GUI,那能不能有一个漂亮的 CUI 呢?

文章地址:https://www.zhihuclub.com/98827.shtml

关于作者: 智云科技

热门文章

网站地图