【Go Fyne】 四行核心代码实现你的第一个GUI界面(下)Go语言GUI-Go Fyne
- 前言
- 一、Vscode的一些配置(配置Go的扩展)
- 1.1 第一步:
- 1.2 第二步:
- 1.3 关于其他工具组件:
- 二、关于代码
- 三、应用程序的结构
- 后记
前言
本系列博客仅仅是作为记录学习而已。
通过记录Go fyne的学习来构建桌面应用程序。它们速度快,效率高而且相对较小。
Fyne——用于构建GUI应用程序的库。它产生非常小的二进制文件,几乎没有依赖。
根据Go语言的特性,我们可以制作出适用于Mac、Windows或Linux的应用程序……
实现效果如下图:
对于第一个GUI界面的实现和详细环境配置参考前一篇文章:【Go Fyne】 四行核心代码实现你的第一个GUI界面(上)Go语言GUI-Go Fyne
一、Vscode的一些配置(配置Go的扩展)
1.1 第一步:
首先Ctrl+shift+P
,输入go:in
,选择图中选项;
选中所有项之后点击确定;
等待片刻之后可以在输出窗口看到所有工具安装成功。
1.2 第二步:
搜索gotemplate-syntax并安装。
1.3 关于其他工具组件:
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的初探。