本文最后更新于 2024-08-08,文章内容可能已经过时。

1、安装官方的命令行工具

go get fyne.io/fyne/cmd/fyne  //安装后可以在命令行使用 fyne指令

2、在网上下载一个喜欢的字体然后将里面的字体转换为go文件:https://51font.17font.com/

fyne bundle Fyne/FontLibrary/YOUAIMOSR.ttf > bundle.go  //创建go资源文件
fyne bundle -append image.jpg >> bundled.go  //向资源文件里面追加内容,演示命令

3、创建目录:theme

4、创建文件:theme/theme.go

package theme

import (
  "fyne.io/fyne/v2"
  "fyne.io/fyne/v2/theme"
  "image/color"
)

type MyTheme struct{}

var _ fyne.Theme = (*MyTheme)(nil)

func (m MyTheme) Font(fyne.TextStyle) fyne.Resource {
  return resourceYOUAIMOSRTtf  //此处的内容是上面命令生成的文件变量,如下图所示
}

func (*MyTheme) Color(n fyne.ThemeColorName, v fyne.ThemeVariant) color.Color {
  return theme.DefaultTheme().Color(n, v)
}

func (*MyTheme) Icon(n fyne.ThemeIconName) fyne.Resource {
  return theme.DefaultTheme().Icon(n)
}

func (*MyTheme) Size(n fyne.ThemeSizeName) float32 {
  return theme.DefaultTheme().Size(n)
}

5、将bundle.go文件移动到theme目录下

6、编辑bundle.go文件包名称为:theme

// auto-generated
// Code generated by '$ fyne bundle'. DO NOT EDIT.

package theme
import "fyne.io/fyne/v2"

  //这里的resourceYOUAIMOSRTtf对应着theme/theme.go里面的变量名称
  var resourceYOUAIMOSRTtf = &fyne.StaticResource{
  StaticName: "YOUAIMOSR.ttf",
  StaticContent: []byte(...太长了)
}

7、完整调用代码

package main

import (
  "GoGUI/theme"
  "fyne.io/fyne/v2/app"
  "fyne.io/fyne/v2/container"
  "fyne.io/fyne/v2/widget"
)

func main() {
  a := app.New()
  a.Settings().SetTheme(&theme.MyTheme{})
  w := a.NewWindow("验证系统")
  hello := widget.NewLabel("快来点一下下面的按钮!")
  w.SetContent(container.NewVBox(
    hello,
    widget.NewButton("点我点我", func() {
      hello.SetText("恭喜你,点击成功,虽然没什么卵用~")
    }),
  ))
  w.ShowAndRun()
}

目录结构

  • theme
    • theme.go //方法覆写文件
    • bundle.go //资源文件打包后的go文件
  • main.go //程序主文件