go语言的GUI是一大短板,至今没有官方的跨平台GUI,第三方GUI库虽然有一些,例如QT/GTK/wxWidget的绑定,但是跨平台编译还是麻烦。如果我们只是需要一个简单的GUI,那么可以使用Console UI,今天我推荐一个很不错的Console UI:gocui,经本人试用,没有额外依赖关系,完全可以在linux平台编译win32程序。
如何安装
它的源代码地址(包引用路径)是:github.com/jroimartin/gocui。但是该程序的中文支持不好,显示中文字符时会漏掉一半文字,因此我给它打了一个补丁,因为该补丁还未被合并到主线中,请从:github.com/rocket049/gocui或者https://gitee.com/rocket049/gocui.git下载源代码,然后复制到目录:GOPATH/src/github.com/jroimartin/gocui。
打了补丁的程序和原程序有2个区别:
可以正确显示中文;
多了一个专门用于从编辑窗口读入中文的函数:(v *View) ReadEditor() []byte,该函数用于还原输入的中文语句。
如何使用
我就以一个简单的输入、显示程序做一个例子:
//Try cjk patch. example of view.ReadEditor
package main
import (
"fmt"
"log"
"github.com/jroimartin/gocui"
)
// 输出窗口
func viewOutput(g *gocui.Gui, x0, y0, x1, y1 int) error {
v, err := g.SetView("out", x0, y0, x1, y1)
if err != nil {
if err != gocui.ErrUnknownView {