GOCUI极简主义的Go开发的控制台用户界面

GOCUI - Go 控制台用户界面

特性

  • 极简 API。
  • 视图(GUI 中的“窗口”)实现 io.ReadWriter 接口。
  • 支持重叠视图。
  • GUI 可在运行时修改(并发安全)。
  • 全局和视图级按键绑定。
  • 支持鼠标操作。
  • 彩色文本。
  • 可自定义编辑模式。
  • 轻松构建可复用的小部件、复杂布局……

安装

执行:

sh 复制代码
go get github.com/jroimartin/gocui

文档

执行:

sh 复制代码
go doc github.com/jroimartin/gocui

或访问 pkg.go.dev 在线阅读。

例子

go 复制代码
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 可在运行时修改(并发安全)。全局和视图级按键绑定,支持鼠标,彩色文本,可自定义编辑模式,轻松构建可重用的小部件和复杂布局……
BSD-3-Clause
Golang
10,402
622
129
2014-01-04
2025-05-01

增长趋势 - stars