Fyne
大约 1 分钟
Fyne
环境准备
安装 Golang 环境
略
安装 C 编译环境
下载安装 msys2
在开始菜单打开 "MSYS2 MinGW 64-bit"
执行如下命令(如果有询问选项全部选择all)
pacman -Syu pacman -S mingw-w64-x86_64-toolchain配置环境变量
xxxx\msys2\mingw64\bin
检查环境
Hello Fyne
创建项目
go mod init testFyne go get fyne.io/fyne/v2测试代码
package main import ( "fmt" "fyne.io/fyne/v2/app" "fyne.io/fyne/v2/widget" ) func main() { a := app.New() w := a.NewWindow("茜茜编程工具箱") w.SetContent(widget.NewLabel("这是一个Label")) w.ShowAndRun() fmt.Println("关闭窗口") }执行失败或者爆红:执行
go mod tidyw.ShowAndRun()等价于w.Show() a.Run()a.run将开启事件循环(Eventloop)不能同时有两个事件循环, 这是因为事件循环负责处理所有的事件(如用户输入)并协调应用程序中的所有组件和窗口。如果你尝试在同一个应用程序中运行多个事件循环,会导致不一致的状态 只能有一个事件循环
在
a.Run()之后的代码直到程序退出才会被执行桌面运行时可以直接调用
a.Quit()来直接退出程序(移动app不支持这项操作)
更新面板内容
func main() {
a := app.New()
w := a.NewWindow("茜茜编程工具箱")
clock := widget.NewLabel("")
updateTime(clock)
w.SetContent(clock)
go func() {
for range time.Tick(time.Second) {
updateTime(clock)
}
}()
w.ShowAndRun()
fmt.Println("关闭窗口")
}
// 更新
func updateTime(clock *widget.Label) {
formatted := time.Now().Format("Time: 03:04:05")
clock.SetText(formatted)
}
问题解决
package fyne.io/fyne/v2/cmd/fyne_demo
imports fyne.io/fyne/v2/app
imports fyne.io/fyne/v2/internal/driver/glfw
imports fyne.io/fyne/v2/internal/driver/common
imports fyne.io/fyne/v2/internal/painter/gl
imports github.com/go-gl/gl/v2.1/gl: build constraints exclude all Go files in C:\Users\11594\go\pkg\mod\github.com\go-gl\gl@v0.0.0-20211210172815-726fda9656d6\v2.1\gl
解决:执行go env -w CGO_ENABLED=1
# runtime/cgo
cc1.exe: sorry, unimplemented: 64-bit mode not compiled in
换MSYS2安装吧
