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"