golang gui学习框架 fyne 解决读取文件信息 解决中文乱码

介绍

基本环境
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
}



结果
在这里插入图片描述

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值