平时都是编写没有界面的工具,今天突然想到要是有个有界面的管理监控程序也不错。
那问题就是:去哪里找UI库?
不用想,网上搜一下:(关键字:GOLANG UI)

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

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

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

安装说明书 在这里 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

第三步,强烈建议安装 glade
它是GTK的UI设计器。设计好的界面可以导出XML格式,我们可以import到项目里,使用GtkBuilder API来加载。
pacman -S mingw-w64-x86_64-glade

安装完Glade这个GtkBuilder后,C:msys64mingw64bin 就有编译文件了,此路径需要加到系统变量PATH。
这时候,运行一下代码,发现还是找不到pkg-config.exe. 按说明继续安装环境。
第四步是用python3开发GTK (如果仅用GO开发,则不用安装)
因为我的电脑环境是python3,命令如下
pacman -S mingw-w64-x86_64-python3-gobject

第五步 可选。安装build tools。
这一步没有安装时,编译代码还是出错。
pacman -S mingw-w64-x86_64-toolchain base-devel
因为提示缺少pkg-config.exe ,故选择14,14) mingw-w64-x86_64-pkg-config

:: 在组 base-devel 中有 58 成员:
那选哪个?看到有45) pkg-config ,加上前面编译错误信息提示pkg-config,就选这个45。
安装完成后,发现用户环境变量下增加了 C:msys64usrbin。并且使用Everything搜索工具也找到了 pkg-config.exe

再次运行项目代码,发现错误提示:
重启IDE,编译,错误:
按错误提示配置 PKG_CONFIG_PATH 环境变量

重启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编译,成功。

总结,其实编译环境按官方说明也可以,就是有时候错了不知道怎么解决。这时候只能多搜一下,看看别人怎么做的。实际上却是有人更加简单的实现了环境搭建。
但,我想的是既然官方有文档,先按官方的来。故还是遇到好多坑,学到不少东西。

我是程序员黑洞,正在学习GO,欢迎关注,留言,交流。
原创文章 用GoLang编写有界面的程序(-)环境,版权所有
如若转载,请注明出处:https://www.itxiaozhan.cn/202210731.html