Golang GUI编程-图形库特性

本文介绍了使用Golang的Fyne库进行GUI编程,包括窗口管理、测试方法、应用打包和元数据设置,以及如何进行交叉编译。Fyne提供便利的测试工具和打包命令,支持多种平台,并推荐了fyne-cross工具简化跨平台编译。
摘要由CSDN通过智能技术生成

窗口管理

  • 创建:App.NewWindow()
  • 显示:Show()
  • 辅助方法:fyne.Window.ShowAndRun()

第二个窗口必须通过Show()来显示,默认创建的窗口大小是根据显示内容自动判定的最小尺寸。

测试

Fyne库提供了方便的测试代码包,通过将组件逻辑和实际渲染分离,可以让我们在不实际显示的情况下加载应用并对完整功能进行测试。

通过"fyne.io/fyne/v2/test"包中的test.NewApp()可以创建一个测试应用(不同于app.New()创建的常规桌面应用),而test.Tap()可以模拟出各种用户操作,之后我们可以通过输出的文本判断结果是否正确。

测试代码可以通过’go test .‘来执行。

应用打包

由于每种环境对和图形应用绑定的图标和元数据的格式都有不同的要求,因此图形应用的打包比较复杂。比如win下的应用需要嵌入的图标,macos因为和Linux绑定导致需要安装各种元数据文件。针对这种情况Fyne直接提供了可以自动处理这些要求的“package”命令,只需要指定目标系统和需要的元数据就能生成合适的应用。包括图标的转换也可以自动完成,因此只需要提供png格式的图片就好。
打包命令示例:
fyne package -os darwin -icon myapp.png
上面的命令可以生成一个可以在macos上分发的包含完整绑定结构的myapp.app应用,如果要生成windows和Linux应用,可以通过下面的命令实现:
fyne package -os linux -icon myapp.png
fyne package -os windows -icon myapp.png
这两个命令的作用分别为:

  • 生成myapp.tar.gz,包含起始路径为usr/local/的文件夹结构,Linux用户可以将其扩展至他们系统的root目录。
  • 生成myapp.exe,该文件包含所有的图标和应用元数据。

如果你只想将应用安装到你的个人电脑,fyne也提供了方便的子命令,例如:
fyne install -icon myapp.png

这些打包命令也支持使用默认的图标图片‘Icon.png’。

应用元数据

从2.1版本开始,Fyne在支持默认Golang工具的同时,也提供了可以设置默认项目选项的matedata file
文件要命名为FyneApp.toml,存放在运行Fyne命令的目录下(通常是main包目录),文件包含内容如下:

Website = "https://example.com"

[Details]
Icon = "Icon.png"
Name = "My App"
ID = "com.example.app"
Version = "1.0.0"
Build = 1

Website元素是可选内容,如果需要将你的应用上传到指定页面,可以通过该元素配置对应网址。
[Details]段中包含了在发布过程中由目标操作系统和应用商店需要用到的和应用有关的数据。Fyne会自动查询该文件是否存在,许多强制命令的配置参数将自动从该文件获取。如果命令行依然输入了这些参数,则以命令行输入参数将会覆盖文件参数。

交叉编译

Golang本身在被设计的时候就考虑了交叉编译的场景,因此只要通过GOOSGOARCH设置目标操作系统架构就可以进行交叉编译。不过使用本地图片时,在Fyne中使用CGo会导致交叉编译变得有点困难。
交叉编译一个Fyne应用要求我们必须设置CGO_ENABLED=1,以便让Go打开C语言编译器(在目标操作系统和当前使用的不同时,该配置是默认关闭的)。这么做意味着你必须有一个可用于目标操作系统的C编译器,而编译器安装完成之后,我们必须在环境变量中配置CC变量来告诉Go应该使用哪个编译器。
依赖的工具有很多种选择,安装方法也有很多种,Fyne建议的配置如下:

GOOS(target)CCproviderdownloadnotes
darwino32-clangosxcrosshttps://github.com/tpoechtrager/osxcross需要安装macOS SDK
windowsx86_64-w64-mingw64-gccmingw64package managermacOS请使用homebrew
linuxgcc or x86_64-linux-musl-gccgcc or musl-crosscygwin or package manager可以通过homebrew使用musl-cross来提供Linux gcc。还需要安装X11和meas用于编译。

以上环境变量设置完成后就可以通过常规方式进行交叉编译,如果仍然有报错信息,那么要考虑是否有包缺失的问题。有一些平台在编译时还需要安装额外的库或者头文件。

下面再介绍一种相对简单点的交叉编译方法:使用虚拟机编译。
由于Linux可以很方便的交叉编译macos和windows应用,因此如果你不是在Linux下进行开发的话,也可以通过虚拟机在Linux系统上完成交叉编译工作。Docker镜像是解决复杂构建配置项的很有用的工具,这一点对Fyne也同样适用。可以选择的应用有很多,Fyne推荐的是 fyne-cross, 它受了xgo的启发,使用了一个建立在golang-cross之上的docker image,包含了可用于windows的MinGW编译器和可用于macos的macOS SDK。
fyne-cross 可用于为以下目标构建二进制文件以及可以用于分发的应用包:

GOOSGOARCH
darwinamd64
darwin386
linuxamd64
linux386
linuxarm64
linuxarm
windowsamd64
windows386
androidamd64
android386
androidarm64
androidarm
ios
freebsdamd64
freebsdarm64

fyne-cross使用要求:

  1. go >= 1.13
  2. docker

安装方法:
go get github.com/fyne-io/fyne-cross
用法:

fyne-cross <command> [options]

The commands are:

	darwin        Build and package a fyne application for the darwin OS
	linux         Build and package a fyne application for the linux OS
	windows       Build and package a fyne application for the windows OS
	android       Build and package a fyne application for the android OS
	ios           Build and package a fyne application for the iOS OS
	freebsd       Build and package a fyne application for the freebsd OS
	version       Print the fyne-cross version information

Use "fyne-cross <command> -help" for more information about a command.

通配符:
arch标签支持通配符,如果要为指定目标系统的所有架构进行编译,可以通过通配符实现:
fyne-cross windows -arch=*
该命令等价于:
fyne-cross windows -arch=amd64,386

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

电梯人来人往

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值