文章插图
Grid布局
Fyne 的窗口控制十分方便,充分利用了 Go 语言的协程特性,完成了窗口的异步渲染和控制:
package mainimport ( "time" "fyne.io/fyne" "fyne.io/fyne/app" "fyne.io/fyne/widget")func main() { myApp := app.New() myWindow := myApp.NewWindow("Hello") myWindow.SetContent(widget.NewLabel("Hello")) go showAnother(myApp) myWindow.ShowAndRun()}func showAnother(a fyne.App) { time.Sleep(time.Second * 5) win := a.NewWindow("Shown later") win.SetContent(widget.NewLabel("5 seconds later")) win.Resize(fyne.NewSize(200, 200)) win.Show() time.Sleep(time.Second * 2) win.Hide()}
在本例中,我们在一个窗口中新建了另一个窗口并进行渲染显示,同时展示了包括控制大小、隐藏关闭等功能 。Fyne 还支持画布功能,可以在画布上进行自由渲染,实现更为复杂的图形应用:
package mainimport ("fyne.io/fyne""fyne.io/fyne/app""fyne.io/fyne/canvas""fyne.io/fyne/theme""image/color""time")func main() {myApp := app.New()myWindow := myApp.NewWindow("Canvas")myCanvas := myWindow.Canvas()text := canvas.NewText("Text", color.White)text.TextStyle.Bold = truemyCanvas.SetContent(text)go changeContent(myCanvas)myWindow.Resize(fyne.NewSize(100, 100))myWindow.ShowAndRun()}func changeContent(c fyne.Canvas) {time.Sleep(time.Second * 2)c.SetContent(canvas.NewRectangle(color.Black))time.Sleep(time.Second * 2)c.SetContent(canvas.NewLine(color.Gray{0x66}))time.Sleep(time.Second * 2)circle := canvas.NewCircle(color.White)circle.StrokeWidth = 4circle.StrokeColor = color.RGBA{0xff, 0x33, 0x33, 0xff}c.SetContent(circle)time.Sleep(time.Second * 2)c.SetContent(canvas.NewImageFromResource(theme.FyneLogo()))}
文章插图
Fyne应用例子
更多Fyne 的打包构建十分简单,安装 Fyne 配套的命令行工具
go get fyne.io/fyne/cmd/fyne
对应桌面端的应用,在确定好目标平台后就可以直接打包:fyne package -os darwin -icon myapp.pngfyne package -os linux -icon myapp.pngfyne package -os windows -icon myapp.png
上述命令分别对应 macOS、Linux 和 Windows平台的构建,而 myapp.png 是应用的图标文件 。对于 macOS 平台,生成 app 应用文件;对于 Linux 平台,生成一个 tag.gz 文件,解包后可以放到 use/local/ 中使用;对于 Windows 平台,直接生成 exe 文件,可以直接运行 。而对于移动端平台,同样十分简单 。在配置好了相应的环境后,运行
fyne package -os android -appID com.example.myapp -icon mobileIcon.pngfyne package -os ios - appID com.example.myapp -icon mobileIcon.png
则可以分别构建出 Android 平台的 apk 文件和 iOS 平台的 app 文件 。文章插图
Fyne特性
总结Fyne 作为一个 UI 工具包,依靠 Go 语言的优秀性能,尤其是 goroutine 协程的异步特性,实现了高性能、易开发的图形界面应用 。Fyne 的使用和设计十分现代化,通过简单的命令行就能实现跨平台的开发和构建,安装方便,平台兼容性好 。
Fyne 并未基于现有的 UI 库进行开发,而是直接使用不同平台的图形驱动实现,完成了对跨平台 UI 的抽象,底层代码值得研究 。同时,Fyne 仍处于活跃开发阶段,不少功能仍待实现,有兴趣的开发者可持续关注项目 。
【Fyne - Go语言的跨平台UI工具包】
推荐阅读
- 凤庆大金芽传奇,被喻为东方香槟的滇红极品凤庆大金芽
- 「站内优化」网站的访问速度与安全性
- 蜂蜜姜茶的功效与作用,蜂蜜姜茶
- 干茶树菇的功效与作用,茶树菇的做法
- 用于相似图片搜索引擎的Python OpenCV图像直方图
- 美的空调显示f0是什么意思?家用空调显示f0是什么意思?
- 中国移动5G用户数?我国5g套餐的用户数已经突破了两亿户?
- SSD主控新势力:吃"螃蟹"的威刚Falcon固态硬盘测试
- C语言之妙:scanf 的双重作用
- 阿富汗ufo事件 2005年9月25日ufo事件