平时都是编写没有界面的工具,今天突然想到要是有个有界面的管理监控程序也不错。

那问题就是:去哪里找UI库?

不用想,网上搜一下:(关键字:GOLANG UI)

用GoLang编写有界面的程序(-)环境插图1搜go语言界面UI编程:GOLANG UI

图中可见,第一个就非常好的网站。

如下图,可以看到有Web based Go GUI和Desktop based Go GUI,但我还是喜欢基于桌面的,于是就找到了gotk3。qt也是一个大型的UI框架,还有一个ui据介绍说是很轻量级的框架,还有一个walk仅支持windows系统。webview这个是跨平台的。

用GoLang编写有界面的程序(-)环境插图3几个UI框架

既然选择了gotk3。那先去看看例子。(代码在这里:github.com/gotk3/gotk3-examples/),用GOLAND 2020.1,编译运行(后面多次运行的都是它)。出错了:

用GoLang编写有界面的程序(-)环境插图5直接运行例子,出错如图

pkg-config –cflags — gio-2.0 glib-2.0 gobject-2.0

pkg-config: exec: “pkg-config”: executable file not found in %PATH%

这个错误提示:在环境变量path中找不到pkg-config.exe

一想,也是哦,我连gotk3的框架都没有安装呢!

安装gotk3

就在上面搜索到GOlang UI的网站Learn GO Programming上 ,gotk3的项目下,有个去安装的链接:https://github.com/gotk3/gotk3

用GoLang编写有界面的程序(-)环境插图7github gotk3 如图

安装说明书 在这里 https://github.com/gotk3/gotk3/wikiinstallation

对于windows系统,安装说明书在这里 https://github.com/gotk3/gotk3/wiki/Installing-on-Windows

官方安装说明书在这里 https://www.gtk.org/docs/installations/windows/

看说明书了解到:要安装MSYS2 ,如果要编译发布还要安装UI的主题 。

第一步安装MSYS2

windows系统下,两种方式:

第一种 使用包管理工具Chocolatey:

先装golang(这个已经安装过了) C:> choco install golang

再装(这个也已安装) C:> choco install git

再装msys2(这个需要安装) C:> choco install msys2

在控制台运行 C:> mingw64 打开一个窗口,即类linux环境:

$ pacman -S mingw-w64-x86_64-gtk3 mingw-w64-x86_64-toolchain base-devel glib2-devel$ echo export PATH=/c/Go/bin:$PATH>> ~/.bashrc$ echo export PATH=/c/Program Files/Git/bin:$PATH>> ~/.bashrc$ source ~/.bashrc$ sed -i -e s/-Wl,-luuid/-luuid/g/mingw64/lib/pkgconfig/gdk-3.0.pc This fixes a bug in pkgconfig$ go get github.com/gotk3/gotk3/gtk

第二种方式:(我使用的这种方式)

需要下载 MSYS2 installer—-msys2-x86_64-20200720.exe。运行即安装。安装完成后即有了UINX-like developement 开发环境–一些软件工具包和库,还有GTK工具栈。

我安装在c:/msys64 。在环境变量path中增加这个路径。让IDE和命令行终端能找到它。

第二步,安装gtk3

在命令行执行msys2,即打开MSYS2 shell。运行命令:

pacman -S mingw-w64-x86_64-gtk3

用GoLang编写有界面的程序(-)环境插图9mingw-w64-x86_64-gtk3安装完成

第三步,强烈建议安装 glade

它是GTK的UI设计器。设计好的界面可以导出XML格式,我们可以import到项目里,使用GtkBuilder API来加载。

pacman -S mingw-w64-x86_64-glade

用GoLang编写有界面的程序(-)环境插图11UI设计器Glade安装

安装完Glade这个GtkBuilder后,C:msys64mingw64bin 就有编译文件了,此路径需要加到系统变量PATH。

这时候,运行一下代码,发现还是找不到pkg-config.exe. 按说明继续安装环境。

第四步是用python3开发GTK (如果仅用GO开发,则不用安装)

因为我的电脑环境是python3,命令如下

pacman -S mingw-w64-x86_64-python3-gobject

用GoLang编写有界面的程序(-)环境插图13python3-gobject安装成功 如图

第五步 可选。安装build tools。

这一步没有安装时,编译代码还是出错。

pacman -S mingw-w64-x86_64-toolchain base-devel

因为提示缺少pkg-config.exe ,故选择14,14) mingw-w64-x86_64-pkg-config

用GoLang编写有界面的程序(-)环境插图15: 在组 base-devel 中有 58 成员:

:: 在组 base-devel 中有 58 成员:

那选哪个?看到有45) pkg-config ,加上前面编译错误信息提示pkg-config,就选这个45。

安装完成后,发现用户环境变量下增加了 C:msys64usrbin。并且使用Everything搜索工具也找到了 pkg-config.exe

用GoLang编写有界面的程序(-)环境插图17如图:已安装pkg-config.exe

再次运行项目代码,发现错误提示:

重启IDE,编译,错误:

按错误提示配置 PKG_CONFIG_PATH 环境变量

用GoLang编写有界面的程序(-)环境插图19错误提示与环境变量

重启IDE,编译错误:

github.com/gotk3/gotk3/glibexec: “gcc”: executable file not found in %PATH%

到这里,可以想到,我电脑上应该还没有安装gcc这个编译工具。

那怎么安装呢?这第五部本来就是安装工具链。能否使用这个命令继续安装?

重新执行命令pacman -S mingw-w64-x86_64-toolchain base-devel,分别选3和45.安装完成。

$ pacman -S mingw-w64-x86_64-toolchain base-devel3) mingw-w64-x86_64-gcc输入某个选择 ( 默认=全部选定 ): 345) pkg-config输入某个选择 ( 默认=全部选定 ): 45(7/8) 正在安装 mingw-w64-x86_64-gcc [] 100%(8/8) 正在重新安装 pkg-config [] 100%

安装完成,重启IDE,运行项目,出错:

github.com/gotk3/gotk3/glibexec: “gcc”: executable file not found in %PATH%

提示说需要配置环境变量 gcc.exe 的路径放到path中。

重启IDE,运行项目,出错:

glibapplication.go:3:11: fatal error: gio/gio.h: No such file or directory3 | // include | ^~~~~~~~~~~compilation terminated.

感觉走到了死胡同,到底哪里错了?再次回顾安装过程:

pacman -Sy

mingw-w64-x86_64-gtk3

mingw-w64-x86_64-toolchain 包括GCC 和pkg-config

环境变量有 C:msys64mingw64bin(这个大概是用来找pkg-config.exe)和C:msys64

如果从cmd命令行编译 则需要 go get github.com/gotk3/gotk3/gtk

如果打开IDE编译,则已经可以了。

应该还是有个路径配置错了--重新检查环境变量,把用户环境变量下C:msys64usrbin换成C:msys64mingw64bin。再回到IDE编译,成功。

用GoLang编写有界面的程序(-)环境插图21

总结,其实编译环境按官方说明也可以,就是有时候错了不知道怎么解决。这时候只能多搜一下,看看别人怎么做的。实际上却是有人更加简单的实现了环境搭建。

但,我想的是既然官方有文档,先按官方的来。故还是遇到好多坑,学到不少东西。

用GoLang编写有界面的程序(-)环境插图23

我是程序员黑洞,正在学习GO,欢迎关注,留言,交流。

原创文章 用GoLang编写有界面的程序(-)环境,版权所有
如若转载,请注明出处:https://www.itxiaozhan.cn/202210731.html