go fyne GUI框架
添加fyne GUI框架
go get fyne.io/fyne/v2@latest
#后面变量是最新版
创建main.go文件:
package main // 主程序包
import (
"fyne.io/fyne/v2/app" // 导入Fyne应用包
"fyne.io/fyne/v2/widget" // 导入Fyne部件包
)
func main() {
a := app.New() // 创建一个新的Fyne应用
w := a.NewWindow("你好,世界!") // 创建一个新窗口并设置标题为"你好,世界!"
w.SetContent(widget.NewLabel("hello world")) // 在窗口中设置一个新的标签,显示"hello world"
w.ShowAndRun() // 显示窗口并运行应用程序
}
记得保存文件
go run fyne.io/fyne/v2/cmd/fyne_demo@latest
//查看示范功能
go get -u github.com/flopp/go-findfont
//查找字体库
一个简单的支持中文的fyne示范:
package main // 主程序包
import (
"fmt"
"fyne.io/fyne/v2"
"fyne.io/fyne/v2/app" // 导入Fyne应用包
"fyne.io/fyne/v2/container"
"fyne.io/fyne/v2/widget" // 导入Fyne部件包
"github.com/flopp/go-findfont"
"os"
"strings"
)
// 初始化
func init() {
fontPaths := findfont.List() //使用了go-findfont库,需要安装它
for _, path := range fontPaths {
if strings.Contains(path, "simhei.ttf") { //黑体
fmt.Println(path)
os.Setenv("FYNE_FONT", path) // 设置环境变量
os.Setenv("FYNE_THEME", "light") // 设置主题环境
// 取消环境变量 os.Unsetenv("FYNE_FONT")
break
} else if strings.Contains(path, "simsun.ttf") { //宋体
fmt.Println(path)
os.Setenv("FYNE_FONT", path) // 设置环境变量
break
}
}
fmt.Println("======初始化完毕=======")
}
// UI容器
func makeUI() (*widget.Label, *widget.Label, *widget.Entry, *widget.Button) { //要设置输出的每个部件和指针类型
lab := widget.NewLabel("hello 世界") //创建标签
lab2 := widget.NewLabel("你好")
ent := widget.NewEntry() //创建输入框
but := widget.NewButton("点击我", func() { butchufa(lab, lab2, ent) }) //创建按钮,并设置触发函数,并传入元素
return lab, lab2, ent, but //返回部件信息
}
func butchufa(lab *widget.Label, lab2 *widget.Label, ent *widget.Entry) { //按钮触发函数,从指针接收元素
lab.SetText(lab2.Text + ent.Text) //这是执行的逻辑,将lab设置text
}
func main() {
a := app.New() // 创建一个新的Fyne应用
w := a.NewWindow("你好,世界!") // 创建一个新窗口并设置标题为"你好,世界!"
w.Resize(fyne.Size{Height: 500, Width: 500}) //设置窗口大小
w.SetContent(container.NewVBox(makeUI())) // 放入UI容器
w.ShowAndRun() // 显示窗口并运行应用程序
}
打包应用
fyne package -os linux -icon app.png -ldflags="-s -w"