Go语言学习(8) 第一个GO语言的GUI图形窗体
haoteby 2025-06-23 19:09 6 浏览
接上期: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的软件做不到的。
相关推荐
- 谷歌开源大模型评测框架正式发布,AI模型评测难题迎刃而解
-
近日科技巨头谷歌正式推出其开源大模型评测框架LMEval,这一创新工具为全球AI开发者和企业提供了标准化的模型评估解决方案。LMEval的发布不仅标志着AI模型评测迈入透明化时代,更通过多项核心技术...
- Android 开发中文引导-动画和图形概述
-
安卓系统提供了各种强大的API,用来将动画应用于界面元素和自定义2D和3D图形的绘制当中。下面的小节大概的描述了可用的API和系统功能并帮助你决定那个方案最适合你的需要。动画安卓框架提供了两种动画系统...
- Qt5 C++入门教程-第12章 绘图(QPainter)
-
QPainter类在Qt5中进行绘图时起着重要作用。绘图操作是通过QPainter类在响应paintEvent方法时完成的。线条在第一个示例中,我们在窗口的客户区绘制了一些线条。line...
- 文创测评︱《如意琳琅图籍》:本土原创解谜书的胜利?
-
设想这样一个场景,你打开一本书,就化身为乾隆三十六年紫禁城中的画画人周本,有一天你在故纸堆中找到一本神秘的《如意琳琅图籍》,踏上寻宝旅程,历经各种离奇复杂的故事……这是故宫与奥秘之家联手打造的创意解谜...
- gif动图制作攻略!快快收藏(求gif制作的动图)
-
有事没事斗图玩是当下人们乐此不疲的事情,手里的gif动图也渐渐成为了人们抬杠互怼的一大资本。好有趣,好炫酷,gif是怎么做出来的?我也想做。什么?你不会?没关系,我来教你!首先介绍一下制作gif动图需...
- eduis未能初始化界面 无法启动 问题解决办法
-
1.如果edius安装后启动后出现failedtoinitializeskin中文提示无法初始化界面的错误。这说明你的电脑安装了双显卡,而edius所使用的是图形显卡。可以选择edius图标右键...
- Flash Player模拟器更新:Rufffle(flash模拟器安卓下载高版本)
-
Ruffle是一个适用于WindowsPC的FlashPlayer模拟器,用Rust编写。Ruffle作为一个独立的应用程序在所有现代操作系统上原生运行,并通过使用WebAssembly在所有现代...
- 支持终身免费4G流量,星星充电7kW星际智能交流充电桩拆解
-
前言近期星星充电推出了一款星际智能交流充电桩,在正面设有灯条,可根据灯条颜色和显示直观了解充电状态,并设有屏幕显示充电状态和ui表情。充电桩支持220V/7kW充电功率,适配主流新能源车型。并支持终身...
- 乐动随心之fancy pop(乐动随心壶多少钱一个)
-
跳动飞扬的音符像是连通人与人之间心电感应的通关密码,融化陌生,拉近彼此。此次我们邀请到宅男女神江语晨,化身音乐精灵。在歌手、演员身份间游刃自如的她,为我们生动诠释了三种不同的音乐时尚风格,娴静可爱,灵...
- Asus Zenflash 手机也能玩引闪,从此相机是路人
-
在讲解Zenflash之前,不得不提索爱的K750c,这个机器采用了氙气闪光灯,让手机的拍摄上了档次,可玩性更高,不过,说实话,当时手机的摄像头像素低,成像一般,没有掀起太大的波澜,可现在,手机的Cm...
- Axure有哪些鲜为人知的使用技巧?(axure的使用教程)
-
阿拓带你飞:不管是想入门产品经理还是已经是PM的人对AXURE都很关注,它是制作产品原型的重要工具,但是有多少人了解AXURE的使用技巧?本文是来自“知乎问答”整理的回答,一起来看看那些不常用的使用技...
- 挑战黑夜 华硕ZenFlash氙气闪光灯评测
-
【机锋配件】说到摄影,相信许多朋友都非常喜欢,不管是外出游玩拍拍风景,还是和朋友之间聚会,都会掏出手机拍两张,在餐前拍照晒朋友圈更是成为了许多用户的日常爱好,就算不是专业的摄影爱好者,大家也都有一颗热...
- WPS 演示倒计时 3 步设置!从数字动画到进度条全场景教程
-
做PPT时想添加倒计时却找不到入口?WPS演示自带的"动画+计时"功能就能轻松实现——无论是课堂互动的30秒答题倒计时、商务汇报的5分钟限时讲解,还是活动暖场的动...
- flash动画an制作MG动画元素如何调节透明度,小白...
-
如何在flash动画软件里面调节mg动画元素的透明?因为flash动画软件现在已经升级为flash动画软件,所以直接用新版flash动画软件开工,基本功能都差不多,只是flash增加很多智能化、人性...