介绍
基本环境
Fyne 需要存在 3 个基本元素,Go 工具(至少 1.12 版)、一个 C 编译器(用于连接系统图形驱动程序)和一个系统图形驱动程序。说明因您的操作系统而异,请选择下面的相应选项卡以获取安装说明。
请注意,这些步骤只是开发所必需的——您的 Fyne 应用程序不需要为最终用户进行任何设置或依赖安装!
window
MSYS2 与 MingW-w64 - msys2.org
Cygwin - cygwin.com
##下载安装
go get fyne.io/fyne/v2
###安装 fyne
###一键安装
网上大多是一键安装 ,但实际在windows中,安装不成功 改为手动安装
go install fyne.io/fyne/v2/cmd/fyne@latest
###手动安装
cd fyne.io/fyne/v2/cmd/fyne
go build -o fyne.exe main.go
添加环境变量
下面都是跟网上教程一样
fyne bundle msyh.ttc >> bundled.go
fyne bundle -append msyhbd.ttc >> bundled.go
生成 bundled.go
重写theme.go
// theme.go
package main
import (
"fyne.io/fyne/v2"
"fyne.io/fyne/v2/theme"
"image/color"
)
type MyTheme struct{}
var _ fyne.Theme = (*MyTheme)(nil)
// return bundled font resource
// ResourceSourceHanSansTtf 即是 bundle.go 文件中 var 的变量名
func (m MyTheme) Font(s fyne.TextStyle) fyne.Resource {
return resourceMsyhTtc
}
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)
}
###引入模块
a.Settings().SetTheme(&MyTheme{})
###项目目录
下面是我实现一个小功能读取txt文件信息
解决读取文件信
直接上代码
package main
import (
"bufio"
"io"
"log"
"fyne.io/fyne/v2"
"fyne.io/fyne/v2/app"
"fyne.io/fyne/v2/container"
"fyne.io/fyne/v2/dialog"
"fyne.io/fyne/v2/widget"
)
//go run .\main.go .\theme.go .\bundled.go
//go build -ldflags="-H windowsgui -w -s"
func main() {
a := app.New()
w := a.NewWindow("中文test")
//设置中文
a.Settings().SetTheme(&MyTheme{})
w.Resize(fyne.NewSize(500, 500))
w.SetContent(container.NewVBox(makeU2I(w)))
w.ShowAndRun()
}
func makeU2I(w fyne.Window) (*widget.Label, *widget.Button, *widget.Button, *widget.Label, *widget.Button) {
// display := widget.NewEntry()
// display.MultiLine = true
output := &widget.Label{Alignment: fyne.TextAlignTrailing}
output.TextStyle.Monospace = true
output.Resize(fyne.NewSize(400, 200))
equation := ""
button := widget.NewButton("开始", func() {
//todo
//百度读取
equation += "1\n"
output.SetText(equation)
})
button2 := widget.NewButton("清除", func() {
equation = ""
output.SetText(equation)
})
output2 := &widget.Label{Alignment: fyne.TextAlignTrailing}
output2.TextStyle.Monospace = true
output2.Resize(fyne.NewSize(400, 200))
btn := widget.NewButton("show dialog", func() {
dialog.ShowFileOpen(func(uc fyne.URIReadCloser, e error) {
strall := ""
reader := bufio.NewReader(uc)
for {
str, err := reader.ReadString('\n')
if err == io.EOF {
break
}
strall += str
}
//buf, err := ioutil.ReadAll(uc)
// if err != nil {
// fyne.LogError("Failed to load image data", err)
// }
output2.SetText(strall + uc.URI().Path())
}, w)
})
return output, button, button2, output2, btn
}
func action() []string {
//百度爬虫
var list []string = []string{}
return list
}
结果