Go 语言生态中,GUI 一直是短板,更别说跨平台的 GUI 了。fyne向前迈了一大步。fyne 是 Go 语言编写的跨平台的 UI 库,它可以很方便地移植到手机设备上。fyne使用上非常简单,同时它还提供fyne命令打包静态资源和应用程序。我们先简单介绍基本控件和布局,然后介绍如何发布一个fyne应用程序。
快速使用 #
由于fyne包含一些 C/C++ 的代码,所以需要gcc编译工具。在 Linux/Mac OSX 上,gcc基本是标配,在 windows上有 3 种方式安装gcc工具链:
- MSYS2 + MingW-w64:https://www.msys2.org/;
- TDM-GCC:https://jmeubank.github.io/tdm-gcc/download/;
- Cygwin:https://www.cygwin.com/。
安装fyne
go get -u fyne.io/fyne
简单窗口
package main
import (
"fyne.io/fyne"
"fyne.io/fyne/app"
"fyne.io/fyne/widget"
)
func main() {
// 创建应用程序对象
app := app.New()
// 创建一个新窗口
win := app.NewWindow("Hello World")
// 设置窗口内容
win.SetContent(widget.NewLabel("Hello World"))
// 设置窗口大小
win.Resize(fyne.NewSize(500, 500))
// 等价于 win.Show() app.Run()
win.ShowAndRun()
}
fyne包结构划分 #
fyne将功能划分到多个子包中:
fyne.io/fyne:提供所有fyne应用程序代码共用的基础定义,包括数据类型和接口;fyne.io/fyne/app:提供创建应用程序的 API;fyne.io/fyne/canvas:提供Fyne使用的绘制 API;fyne.io/fyne/dialog:提供对话框组件;fyne.io/fyne/layout:提供多种界面布局;fyne.io/fyne/widget:提供多种组件,fyne所有的窗体控件和交互元素都在这个子包中。