之前写过一篇使用 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"