之前写过一篇使用 walk 包开发GUI,但是使用过程中发现walk封装的不是很好,虽然功能也很丰富,但是使用起来发现不太符合我的调用习惯,于是转而参考下 fyne 库。

源码:https://github.com/fyne-io/fyne

API文档:https://developer.fyne.io/

此包需要安装 gcc 编译工具。

exec: "gcc": executable file not found in %PATH%

去官网

https://sourceforge.net/projects/mingw-w64/files/mingw-w64/

下载如下软件

https://sourceforge.net/projects/mingw-w64/files/Toolchains%20targetting%20Win32/Personal%20Builds/mingw-builds/installer/mingw-w64-install.exe

安装
在这里插入图片描述
打开环境变量,找到 Path 那一栏,添加一行。

D:\Program Files\mingw-w64\x86_64-8.1.0-posix-seh-rt_v6-rev0\mingw64\bin
gcc -v

demo 展示

go get fyne.io/fyne/v2/cmd/fyne_demo/
fyne_demo

在这里插入图片描述

看到输出了一个错误

Fyne error:  Failed to set dark mode
v2.1.1

但是在使用过程中发现中文会乱码,显然目前还不支持中文,需要手动设置,方法如下。

go get github.com/flopp/go-findfont

作用是找到当前操作系统上的已安装的字体列表,ttf, ttc。
func setFont() {
	fontPaths := findfont.List()
	for _, path := range fontPaths {
		// 微软雅黑-常规
		if strings.Contains(path, "msyh.ttc") {
			os.Setenv("FYNE_FONT", path)
			break
		}
	}
}

func main() {
	setFont()
	defer os.Unsetenv("FYNE_FONT")
	......
}

这样就能很好的支持中文了。

编译与压缩,隐藏CMD框

go build -ldflags="-H windowsgui -w -s"

设置图标
找到一个 png 的图片,放在项目根目录

// 步骤一
// 安装fyne工具
go get fyne.io/fyne/cmd/fyne

// 步骤二
// 将静态资源编译为 go 文件
fyne bundle fav.png >> bundled.go
// 如果是要追加资源
// fyne bundle -append image2.jpg >> bundled.go

// 步骤三
// 打开 bundled.go 文件会看到一个变量 resourceFavPng
// 修改代码,给 app 设置图标
// 这样,窗口图标,任务栏图标就设置好了
a := app.New()
a.SetIcon(resourceFavPng)

// 最后打包,使用 fyne package 而不是 go build
// fyne package 设置了可执行文件的图标,并且隐藏了CMD框,但是它默认的编译没有添加压缩参数。
fyne package -os windows -icon fav.png

至此,可执行文件,窗口图标,任务栏图标都有了。遗憾的是没法添加压缩参数 -ldflags="-H windowsgui -w -s"