赞
踩
该系列学习的详细视频教学地址:2022 Go语言实战课程 用Go Fyne框架快速开发GUI程序课程[用Go开发桌面、移动端程序]
本系列博客仅仅是作为记录学习而已。
通过记录Go fyne的学习来构建桌面应用程序。它们速度快,效率高而且相对较小。
Fyne——用于构建GUI应用程序的库。它产生非常小的二进制文件,几乎没有依赖。
根据Go语言的特性,我们可以制作出适用于Mac、Windows或Linux的应用程序……
实现效果如下图:

对于第一个GUI界面的实现和详细环境配置参考前一篇文章:【Go Fyne】 四行核心代码实现你的第一个GUI界面(上)Go语言GUI-Go Fyne
首先Ctrl+shift+P,输入go:in,选择图中选项;

选中所有项之后点击确定;

等待片刻之后可以在输出窗口看到所有工具安装成功。

搜索gotemplate-syntax并安装。

1、make:
这是一个非常好和非常常用的构建工具。
2、chocolatey:
Windows自带的巧克力称为chocolatey,安装好chocolatey后通过chocolatey安装make。
3、C compiler(C编译器):
tdm-gcc——为了便于构建良好的应用程序。当然,也可以按照官网推荐安装msys2。
1、go mod init fynehw——创建了一个新的go mod文件。
2、go get fyne.io/fyne/v2——使代码整洁,但是并没有进行实际工作。
3、a := app.New()——将a赋值,创建一个新的application;创建一个叫做a的小变量,并使它成为我的应用程序。
4、w := a.NewWindow(“Hello, World!”)——对变量w进行声明,以此来创建应用程序a的窗口,否则就什么也看不到。为应用程序a创建了一个标题为Hello, World!的窗口。
5、w.SetContent(widget.NewLabel(“Hello, World!”))——设置窗口中的内容—>把窗口的内容设置为小部件包(widgets)中的小部件(在此使用Label—标签)—>标签内容为Hello, World!。
放入窗口中的东西被称为容器(container)——后续会提及。
6、w.ShowAndRun()——启动应用程序。
变量a即为我们创建的应用,一个应用程序有一个变量,这个变量的类型是永远不必使用的(One application has one variable that is of a type you are never going to have to);
每个应用程序至少需要有一个窗口,w为窗口,标题为Hello, World!;
窗口中的内容由小部件(widget)组成,而小部件有很多种类,有标签、按钮、文本输入等等。
应用程序通过show来展示窗口并通过run来运行程序,在此通过w.ShowAndRun()一个命令就实现了两个操作。除此之外,我们也可以通过使用w.Show()和a.Run()两条指令来实现同样的效果。下列示例代码的效果和上一篇文章的代码效果一样。
eg:
package main import ( "fyne.io/fyne/v2/app" "fyne.io/fyne/v2/widget" ) func main() { a := app.New() w := a.NewWindow("Hello, World!") w.SetContent(widget.NewLabel("Hello, World!")) w.Show() a.Run() }
当代码运行到w.ShowAndRun()时,程序会一直执行事件循环或者run循环,并且不会执行此后的任何代码;它只在后台运行,监听轻拍、点击、移动或者其他任何可能的操作。它在后台侦听事件,当做出对应操作时会对事件采取行动。直到我们终止该应用程序之后,代码才会继续向下执行。
eg:
package main import ( "fmt" "fyne.io/fyne/v2/app" "fyne.io/fyne/v2/widget" ) func main() { a := app.New() w := a.NewWindow("Hello, World!") w.SetContent(widget.NewLabel("Hello, World!")) w.ShowAndRun() tidy() } func tidy() { fmt.Println("would tidy up") }
只有当我们关闭应用程序之后,代码才会继续执行tidy(),如下图所示:

这部分的学习是对Go语言制作GUI的初探。
我设置了对应的专栏,大家喜欢的可以订阅欧~
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。