go fyne GUI框架


添加fyne GUI框架

go get fyne.io/fyne/v2@latest #后面变量是最新版

创建main.go文件:

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示范:

go
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"

面朝阳光,阴影便会落到你身后去 -- 毛利谚语