程序员求职经验分享与学习资料整理平台

网站首页 > 文章精选 正文

Go语言学习(8) 第一个GO语言的GUI图形窗体

balukai 2025-03-10 12:28:11 文章精选 90 ℃

接上期:Go语言学习(7)func层次结构

https://www.toutiao.com/i6930588598840508931/?group_id=6930588598840508931

前面我做的小示例都是命令行工具,执行在命令行,运行结果也以命令行输出。

这种命令行方式是DOS时代的产物,也是操作系统底层的最基本的人机交互方式。电脑中黑客们都是搞键盘代码,linux系统中也是通篇都是命令行方式。系统可以没鼠标,但不能没有键盘命令行方式。下面是常用的linux命令

但是系统在发展,复杂的命令行让用户望而生畏。用户对美观的图形界面的向往是合理的需求。

但是为什么GO语言没有官方GUI图形界面包 ?难道vb6 vbnet/C# 起步就有的图形界面这么难实现么?

这些问题很好,可能需要写长篇大论来阐述这个问题,这是简单这样回复一下:

一,go语言要适应跨平台需求:

每个平台有不同的GUI实现方式,图形接口非常复杂,同学们看看跨平台GUI做得最好的QT有多大就明白了。前面说的vb6 vbnet/C# 没有这个需要,只考虑在win平台,那就是只用调用WinAPI就行了。因为系统已经准备好了GUI,只让建构上平台上的程序调用就行了。

二、go语言主要应用于面向服务器级高并发响应。

golang目前的设计重点还在后端,GUI主要作为前端应用。在服务器端作为高速响应后台,拖一个GUI界面是很大累赘。甚至是完全没必要的。

三、第三方已经推出了一系统可用的GUI

跨平台的方案有therecipe/qt 、andlabs/ui、sciter-sdk/go-sciter、electron/js等

不跨平台比如win下的lxn/walk,它以 Windows API 做的 GUI库,他的 性能 和 功能都很完美,目前没有太大的缺陷!

使用方法

第1步:引入

go get github.com/lxn/walk支持库

第2步:创建一个基础walk窗体

创建MainWindow,使用Layout布局,添加一个PushButton和TextEdit

第3步:在工程文件中加入一个系统ICO文件,如我使用的sun.ico

第4步:在工程文件中加入一个win.manifest文件,内容为



    
    
        
            
        
    
    
        
            true
        
    

第5步:引入go get github.com/akavel/rsrc

查看d:\gopath\bin目录下会下载到一个rsrc.exe文件

第6步:使用命令行

..\..\bin\rsrc -manifest win.manifest -ico sun.ico -o win.syso

把win.manifest和sun.ico图标编译成win.syso

完成这步后,工程目录中会生成一个win.syso的文件。以后其他win go的工程如果没有变更win.manifest和sun.ico的话,win.syso是可以直接复制到其他项目中使用的。因此以后工程中上面第5步和第6步可以省略

第7步:命令行使用go build -ldflags="-H windowsgui",把当前项目编译成GUI窗体,如果只用go build编译,将只看到一个窗体一闪就关掉了。

最后生成的win GUI窗体,虽然简单,只包括一个功能按钮和文本框作为输出

这个Golang版的GUI小程序,读取了一个excel文件中的所有表名,列表显示在文本框中。后面我将依托这个框架演示一下golang读写excel的小代码。

说明一下,golang读写excel是不依赖系统office的,也就是在没有安装excel的系统中,包括服务器中都是可以使用的,这点是那些依赖office的软件做不到的。

Tags:

最近发表
标签列表