published on in Go

Go语言的跨平台对话框

sqweek/dialog 是一个 Go 语言库,用于创建用户友好的命令行界面应用程序。它提供了一组用于创建对话框、提示、菜单和其他交互元素的函数。dialog 的设计旨在易于使用,同时仍然强大且可定制。

安装

要安装 sqweek/dialog,请运行以下命令:

go get github.com/sqweek/dialog

使用

dialog 的使用非常简单。要创建一个对话框,只需调用 dialog.Message() 函数,并传入要显示的消息和标题。例如,以下代码创建一个确认对话框,询问用户是否要继续:

ok := dialog.Message("%s", "Do you want to continue?").Title("Are you sure?").YesNo()

dialog 还提供了一组用于创建文件选择器、目录浏览器和菜单的函数。例如,以下代码创建一个文件选择器,允许用户选择一个 MP3 音频文件:

filename, err := dialog.File().Filter("Mp3 audio file", "mp3").Load()

以下代码创建一个目录浏览器,允许用户选择一个目录:

directory, err := dialog.Directory().Title("Load images").Browse()

应用

我们可以用它来优化之前编写的 PDF 文档阅读器:

func main() {
    filename, err := dialog.File().Filter("pdf document", "pdf").Load()
    if err == dialog.Cancelled {
        return
    }
	if err != nil {
        log.Fatal(err)
	}

	doc, err = fitz.New(filename)
	if err != nil {
        log.Fatal(err)
	}

先前我们使用 flag 工具获取命令行输入参数来指定打开某个文件,现在我们使用 dialog 通过可视化方法来选择某个文件进行打开。