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

接上期: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文件,内容为

<?xml version='1.0' encoding='UTF-8' standalone='yes'?><assembly xmlns='urn:schemas-microsoft-com:asm.v1' manifestVersion='1.0' xmlns:asmv3='urn:schemas-microsoft-com:asm.v3'> <assemblyIdentity version='1.0.0.0' processorArchitecture='*' name='SomeFunkyNameHere' type='win32'/> <dependency> <dependentAssembly> <assemblyIdentity type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='*' publicKeyToken='6595b64144ccf1df' language='*'/> </dependentAssembly> </dependency> <asmv3:application> <asmv3:windowsSettings xmlns='http://schemas.microsoft.com/SMI/2005/WindowsSettings'> <dpiAware>true</dpiAware> </asmv3:windowsSettings> </asmv3:application></assembly>

第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的软件做不到的。

(0)

相关推荐

  • 电脑命令行窗口怎么打开

    品牌型号:联想天逸510S 2020 系统:win10 1909 64位企业版 部分用户可能电脑型号不一样,但系统版本一致都适合该方法. 电脑命令行窗口怎么打开呢?给大家分享一下电脑如何打开命令行窗口 ...

  • 通过命令行(cmd)确认python是win32还是amd64

    这个 amd64 跟我们系统 64 位没有什么关系呢,这个涉及到 cpu 内核指令集了. 下面告诉大家一个方法,如何确定安装 win32 的还是 amd64,非常简单! 我们直接通过 platform ...

  • 这款小应用让微软 Win11 恢复为 Win10 经典右键菜单

    IT之家 10 月 11 日消息 据 MSPoweruser 报道,微软 Windows 11 正式版已经发布,简化了右键上下文菜单,使其密度降低,将许多选项移至"显示更多选项"子 ...

  • Python 控制台窗体关闭按钮禁用和启用

    很多Python控制台程序需长期运行,但是一不小心就点上控制台窗体关闭按钮,没有任何提示就终止了正在运行的程序. 因此需禁用控制台窗体关闭按钮(X),当然根据需要也可以启用关闭按钮. 控制台窗口(wi ...

  • Python pywin32 学习笔记(一)

    不确定会坚持多久 能记多少就记多少吧 2019年3月1日21:02:26 停更一年多了,最近对PY产生了兴趣,应为想解放双手,又不想用按键精灵之类的软件,于是乎就百度到了这个东东"pywin ...

  • 【C语言笔记】分享一个C语言测试程序模板

    前言 平时需要测试一些比较模糊的知识点,或则想要验证一些函数时,我们常常会建一个test.c文件,然后在这个文件里写我们的测试代码,测试完毕后常常会删掉该文件.下次再遇到同样的问题的时候,可能又是记不 ...

  • 一个 Go 语言实现的高性能 NoSQL 数据库

    Go语言中文网 今天 以下文章来源于Go招聘 ,作者欧盆索思 Go招聘Golang 相关求职和招聘,以及面试题.经验分享,Go 语言其他知识和职场也是值得分享的. NoSQL 数据库和关系数据库一样被 ...

  • 分享一个c语言单元测试框架

    来源:https://www.cnblogs.com/pingwen/p/9216004.html 1.简介 CuTest是一款微小的C语言单元测试框,非常简洁,只有2个文件,CuTest.c和CuT ...

  • 小学语文教学要回归语言学习的本真

    小学语文教学要回归语言学习的本真 李孟雅(授权) 今天面试语文老师的时候,我突然想起一件事,一件让我担忧小学生语文教育的事.不知道这样说是否恰当,但是我亲妹妹是个小学生,我算是半个家长的身份,以我这个 ...

  • 零基础R语言学习路线

    其实相对于常见的编程语言,R语言还是非常容易上手.学习1年多时间,就可以找一份不错的工作了. 前言 我当初学习R的时候在网上搜到一则流传很广的R语言学习路线图(R语言学习由浅入深路线图),我在微信圈, ...

  • R语言学习小感悟

    最近看了看<R数据科学>(即R for data science的中文版)和<R语言-实用数据分析和可视化技术>(即R for Everyone Advanced Analyt ...

  • 第一个Go语言类库:启用、创建并发布第一个模块

    这是<Go语言简易入门>系列内容第6篇,所有内容列表见:https://yishulun.com/books/go-easy/目录.html.所有源码及资料在"程序员LIYI&q ...

  • 【Go语言学习笔记一】基础语法

    行分隔行 在 Go 程序中,一行代表一个语句结束.每个语句不需要像 C 家族中的其它语言一样以分号 ; 结尾, 但是可以使用分号:结尾,如果当你将多个语句写在同一行时,则必须使用分号: 一.变量 1. ...

  • 苏轼的一首诗,浅显的语言却告诉我们一个深刻的道理

    诗词可以抒情,还可以说理. 读"欲穷千里目,更上一层楼",我们明白了站得高,才能看得远的道理: 读"夕阳无限好,只是近黄昏",我们懂得最美好的风景,往往最短暂: ...