环境要求与程序基本概念,Fyne学习笔记第1篇
目录
这是我的Fyne学习笔记系列第1篇。
Fyne是go一个非常好的GUI框架,通过OpenGL作为其主要的图形渲染后端,支持五大平台(windows,linux,macos,android,ios)构建一样的图形软件,并不完整支持wasm来写网页。
本文基于Fyne v2.7.2。
环境要求
安装Go工具链,最低Go1.19,建议最新。
安装C工具链,我用的clang version 18.1.4可以。 从 https://github.com/mstorsjo/llvm-mingw/releases/tag/20240417 获取。
如果要编译到安卓平台,还需要安装Android NDK。
编译到macos或ios平台必须在macos系统中进行,所以本系列不做讨论。
程序基本概念
用Fyne写一个简单的Hello World是这样的。
package main
import (
"fyne.io/fyne/v2/app"
"fyne.io/fyne/v2/widget"
)
func main() {
a := app.New()
w := a.NewWindow("Hello World")
w.SetContent(widget.NewLabel("Hello World!"))
w.ShowAndRun()
}
这里有几个基本概念
- App:应用实例,它功能包括管理多个窗口、设置图标、发送通知等,默认在所有窗口关闭后退出。
- Window:窗口,一个App可以有多个窗口,Window功能包括设置标题、进入全屏等,所有显示的Window都通过窗口设置。
- CanvasObject:任何可以添加到画布上的图形对象,所有图形组件,如
widget.Label都实现这个接口。Window.SetContent接收的参数类型也是这个接口。 - 事件循环:在Fyne中,UI渲染和事件处理,在一个单独的goroutine进行事件循环处理的,
App.Run()或Window.ShowAndRun()从main()函数中调用启动它。
简而言之,一个Fyne程序,有且只有一个App,通过Window管理显示的标签,表格,下列列表等Widget(小部件)。
一个可显示的图形应该实现CanvasObject接口。
最后必须启动事件循环来进行UI渲染,才能显示图形。