【Go Fyne】 四行核心代码实现你的第一个GUI界面(下)Go语言GUI-Go Fyne

  • 前言
  • 一、Vscode的一些配置(配置Go的扩展)
  • 1.1 第一步:
  • 1.2 第二步:
  • 1.3 关于其他工具组件:
  • 二、关于代码
  • 三、应用程序的结构
  • 后记

前言

 本系列博客仅仅是作为记录学习而已。

通过记录Go fyne的学习来构建桌面应用程序。它们速度快,效率高而且相对较小。
Fyne——用于构建GUI应用程序的库。它产生非常小的二进制文件,几乎没有依赖。
根据Go语言的特性,我们可以制作出适用于Mac、Windows或Linux的应用程序……

实现效果如下图:

go语言在线编程 go语言gui编程_golang

对于第一个GUI界面的实现和详细环境配置参考前一篇文章:【Go Fyne】 四行核心代码实现你的第一个GUI界面(上)Go语言GUI-Go Fyne

一、Vscode的一些配置(配置Go的扩展)

1.1 第一步:

首先Ctrl+shift+P,输入go:in,选择图中选项;

go语言在线编程 go语言gui编程_go语言在线编程_02


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

go语言在线编程 go语言gui编程_应用程序_03


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

go语言在线编程 go语言gui编程_go语言在线编程_04

1.2 第二步:

搜索gotemplate-syntax并安装。

go语言在线编程 go语言gui编程_golang_05

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语言在线编程 go语言gui编程_后端_06

后记

这部分的学习是对Go语言制作GUI的初探。