秋来冬风的博客

环境要求与程序基本概念,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渲染,才能显示图形。

Tags:
Categories: