Fyne 入门
mnsd

Fyne 是一个用 Go 编写跨平台图形界面的工具包,适合做一些轻量级桌面工具。它的优势是部署简单、代码结构比较直接,不需要额外维护一套前端工程。

安装环境

使用 Fyne 前需要先安装 Go 环境,并确认 go 命令可以正常使用。

1
go version

安装 Fyne 命令行工具:

1
go install fyne.io/fyne/v2/cmd/fyne@latest

如果只是编写和运行普通程序,也可以先不安装 fyne 命令行工具,直接在项目里引入依赖。

创建项目

新建一个目录并初始化 Go 模块:

1
2
3
mkdir fyne-demo
cd fyne-demo
go mod init fyne-demo

创建 main.go

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
package main

import (
"fyne.io/fyne/v2"
"fyne.io/fyne/v2/app"
"fyne.io/fyne/v2/widget"
)

func main() {
a := app.New()
w := a.NewWindow("Fyne Demo")

w.SetContent(widget.NewLabel("Hello Fyne"))
w.Resize(fyne.NewSize(320, 180))
w.ShowAndRun()
}

上面的代码会创建一个窗口,并在窗口中显示一段文本。

运行程序

1
go run .

第一次运行时 Go 会自动下载依赖。如果下载较慢,可以先配置 Go 模块代理。

1
go env -w GOPROXY=https://goproxy.cn,direct

常用控件

  • widget.NewLabel():文本标签
  • widget.NewButton():按钮
  • widget.NewEntry():输入框
  • container.NewVBox():纵向排列布局
  • container.NewHBox():横向排列布局

一个稍微完整一点的例子:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
package main

import (
"fmt"

"fyne.io/fyne/v2"
"fyne.io/fyne/v2/app"
"fyne.io/fyne/v2/container"
"fyne.io/fyne/v2/widget"
)

func main() {
a := app.New()
w := a.NewWindow("计数器")
w.Resize(fyne.NewSize(320, 200))

count := 0
label := widget.NewLabel("当前计数:0")
button := widget.NewButton("加一", func() {
count++
label.SetText(fmt.Sprintf("当前计数:%d", count))
})

w.SetContent(container.NewVBox(label, button))
w.ShowAndRun()
}

Fyne 的基本写法就是创建窗口、创建控件、组合布局、绑定事件。

打包

可以使用 Fyne 官方工具打包:

1
fyne package

如果只是自己使用,也可以直接用 Go 编译:

1
go build -o fyne-demo

常见问题

Linux 下如果编译失败,通常是缺少图形界面相关依赖。可以先根据报错补齐 OpenGL、X11、Wayland 等开发库。

如果程序能运行但中文显示异常,可以检查系统字体是否完整。Fyne 会使用系统字体,最常见的问题不是代码本身,而是环境里没有合适的中文字体。

 评论
评论插件加载失败
正在加载评论插件