fyne实战
1 介绍fyne界面实现
使用Fyne工具包构建跨平台应用是非常简单的,在此之前我们需要做一些准备功能做,比如安装一些gcc基础图形依赖库,还有go语言本身的运行开发环境都是必要的。
经我研究一天,我感觉它的界面实现跟html有一定的区别的,首选一点就是它的容器和布局不能给定大小,给了不会变,它是根据它容器的特性决定,首选是Box 盒子模型,VBox是最小尺寸,这一点刚开始用的时候,设计模型用VBOX和HBOX,傻眼了。后来才用到Border边框布局
2 Border 边框布局
myApp := app.New()
myWindow := myApp.NewWindow("Border Layout")
red := color.NRGBA{R: 0xff, A: 0xff}
//blue := color.NRGBA{B: 0xff, A: 0xff}
top := canvas.NewText("top bar", color.Black)
left := canvas.NewText("left", red)
nofi := canvas.NewText("content", red)
backgroundColor := canvas.NewRectangle(color.NRGBA{R: 200, G: 200, B: 100, A: 255})
//backgroundColor.FillColor = blue
// 使用容器将背景添加到窗口中
middle := container.New(layout.NewStackLayout(), backgroundColor, nofi)
content := container.NewBorder(top, nil, left, nil, middle)
myWindow.SetContent(content)
myWindow.ShowAndRun()
我们定义了3个容器上面左面和中间,上面和左边的都很小,中间会自动填充,效果图:
3 其他容器
给出官方地址
https://go-circle.cn/fyne-press/v1.0/4-containers-and-layout/max.html
还有一些特殊的像container.NewVSplit
创建个垂直相等自动填充的容器,你可以像下面一样创建容器,容器放到容器里面。
content := container.NewBorder(ssbURL2,
layout.NewSpacer(),
container.NewGridWithColumns(1, button, button2, button3, button4, layout.NewSpacer(), layout.NewSpacer(), layout.NewSpacer(), layout.NewSpacer(), layout.NewSpacer()),
layout.NewSpacer(),
container.NewVSplit(entry, entry2),
4.编译
本来是像结合大漠插件一起写的,可以测试的时候大漠和fyne 在一起不能编译通过一个是386,amd64。只能改变方案用http连接了
5.小项目
下面地址项目地址。fyne到一段落
git clone https://gitee.com/qaz9877/b44.git
下面是一个本地图片查看器,是我最近更新的
git clone https://gitee.com/qaz9877/ff56.git