使用Golang语言walk框架开发一个简单的windowsGUI

news2024/9/21 17:38:24

1、前言

最近使用golang语言开发了一个windowsGUI的Demo,由于golang语言属于比较新的语言,对GUI开发这一块并没有原生库也没有推荐库,因此我在github上找到了一个叫做walk的GUI开发框架。

github原址为:http://github.com/lxn/walk

在golang社区也能看到他的文档:http://godoc.org/github.com/lxn/walk

当然,你看了github和godoc就能发现,这个文档和直接看源码没啥区别,文档里没有让人一眼就能明白的描述,只是对方法和属性的介绍,至于具体使用更是没有。全靠自己摸索。

当然,在他的源码里,你可以看到有一个examples的文件夹,这个里面包含了所有作者写出的示例(当然,也没有什么有用的注释告诉你这个例子干了什么)。只能在terminal里进入一个个的文件夹,一次次的编译,然后运行.exe文件看效果,才能知道这个例子到底是干嘛的。

当然,作者贴心的在每个示例里上传了.syso文件,这样我们可以直接使用go build进行编译然后运行.exe查看效果了。否则的话还需要安装rsrc工具,对.manifest文件进行打包,然后再编译.exe文件。如果想编译出的.exe文件没有cmd命令行,则需要加上 -ldflags="-H windowsgui"参数,所以最终编译的命令为:go build -ldflags="-H windowsgui"

2、源码地址

项目名称为clientDemo

github地址:https://github.com/imcc2022/clientDemo

gitee地址:https://gitee.com/imcc2022/client-demo

访问不了github的同学可以访问gitee。项目的详细介绍在 README.md文件中。这里再贴一下

3、项目介绍

演示图
演示图

 

clientDemo

一个用walk框架写的windowsGUI示例(golang) / A windows GUI demo written by walk framework(golang)

功能点包括:输入框,密码行,登录,系统托盘,页面切换,窗口最大化禁用,窗口尺寸禁止修改等 / Function nodes include: input box, password line, login, system tray, page switching, window maximization disabled, window size disabled, etc

项目结构 / Project Structure

1:主目录(clientDemo)

master directory(clientDemo)

2:资源目录(clientDemo/resource)[包含图片和manifest声明打包文件]

resource directory(clientDemo/resource)[Include imgs and manifest files]

3:服务目录(clientDemo/service)[包含所有非ui相关的功能]

service directory(clientDemo/service)[Include all functions except ui]

4:界面目录(clientDemo/ui)[包含所有ui功能]

ui directory(clientDemo/ui)[Include all ui functions]

5:main.go[程序入口]

main.go[Program entry]

6:clientDemo.syso[由rsrc工具执行生成]

clientDemo.syso[Generate by rsrc tool]

7:go.mod[golang的包管理文件]

go.mod[Package management file of golang]

步骤 / Steps

1:安装golang环境,需要Go 1.11.x或更新的版本(https://go.dev/doc/install)

Install the golang environment,require Go 1.11.x or later(https://go.dev/doc/install)

2:执行"go mod tidy"命令下载go.mod文件中的依赖

Run "go mod tidy" command to download the dependencies in the go.mod file

3:如果想完整掌握项目编译过程,则需要安装rsrc工具

If you want to fully master the project compilation process, you need to install the rsrc tool

(1):执行"go get github.com/akavel/rsrc" 命令下载rsrc工具

Execute the "go get github.com/akavel/rsrc" command to download the rsrc tool

(2):进入GOPATH并找到rsrc目录

Enter GOPATH and find the rsrc directory

如果配置了GOPATH环境变量则可以直接通过"%GOPATH%\pkg\mod\github.com\akavel"进入

If the GOPATH environment variable is configured, you can directly enter through "%GOPATH%\pkg\mod\github.com\akavel"

如果没有配置且golang是默认安装的话,GOPATH通常会在"C:\Users\yourComputerName\go"目录下

If there is no configuration and golang is installed by default, GOPATH is usually in the "C: Users yourComputerName go" directory

(3):进入rsrc目录并将rsrc.exe文件拷贝到%GOROOT%\bin目录下,这时你就可以使用rsrc命令了(%GOROOT%是golang的安装目录)

Enter the rsrc directory and set the rsrc Copy the exe file to the% GOROOT% bin directory, and then you can use the rsrc command (% GOROOT% is the installation directory of golang)

(4):使用"rsrc -manifest resource/clientDemo.exe.manifest -o clientDemo.syso -ico resource/icon.ico"命令进行打包,"-manifest resource/clientDemo.exe.manifest"表示将"resource/clientDemo.exe.manifest"文件作为打包时的声明文件,"-o clientDemo.syso"设置生成的文件名称,"-ico resource/icon.ico"声明最终生成.exe文件的图标。PS:icon.ico文件必须是标准的.ico文件,不能是.jpeg文件直接修改文件后缀名形成。

Use the "rsrc -manifest resource/clientDemo.exe.manifest -o clientDemo.syso -ico resource/icon.ico" command to package. "-manifest resource/clientDemo.exe.manifest" means to use the "resource/clientDemo.exe.manifest" file as the declaration file when packaging. "-o clientDemo.syso" sets the name of the generated file. "-ico resource/icon.ico" declares the icon of the final generated.exe file. PS:The icon.ico file must be a standard. ico file, not a .jpeg file.can't get by Modifing the file suffix!

(5):执行" go build -ldflags="-H windowsgui" "命令进行编译,并形成.exe文件," -ldflags="-H windowsgui" "参数用于消除cmd命令框,如果需要则可以直接使用"go build"命令进行编译

Execute the " go build -ldflags="-H windowsgui" " command to compile and form Exe file, " -ldflags="-H windowsgui" " parameter is used to eliminate the cmd command box. If necessary, you can directly use the "go build" command to compile

(6):运行clientDemo.exe文件

run clientDemo.exe file

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/69655.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

定时执行专家 —— 定时循环发送TCP消息(例如:控制设备的开关机等场景)

《定时执行专家》是一款制作精良、功能强大、简单易用、毫秒级精度、专业级的定时任务执行软件。软件具有 21 种【任务类型】、12 种【触发器】触发方式,并且全面支持界面化Cron表达式设置。软件采用多线程并发方式检测任务触发和任务执行,能够达到毫秒级…

带你快速入门JDBC

1,JDBC概述 在开发中我们使用的是java语言,那么势必要通过java语言操作数据库中的数据。这就是接下来要学习的JDBC。 1.1 JDBC概念 JDBC 就是使用Java语言操作关系型数据库的一套API 全称:( Java DataBase Connectivity ) Java 数据库连接 …

Win11的两个实用技巧系列之开机后桌面无响应怎么办?

目录 win10开机后桌面无响应怎么办?win10开机后桌面无响应点什么都不行 win10开机后桌面无响应点什么都不行怎么办? Win10和Win11 22H2如何关闭文字热门搜索? Win11 22H2关闭文字热门搜索 Win10 22H2关闭文字热门搜索 点击拿去 win10开机后桌面无响应怎么办…

NR PUSCH power control

这篇看下NR PUSCH power control的相关内容,主要内容集中在38.213 7.1章节,功率计算无非就是一个长公式,根据RRC配置的参数及后续DCI field 的内容作出功率的调整;最初这部分看的就云里雾里的,最近再看,相比…

环境土壤物理模型HYDRUS

HYDRUS是由著名土壤学家Rien van Genuchten和Jirka Simunek等人基于Windows系统界面开发的环境土壤物理模拟软件,是模拟一维和多维变饱和多孔介质的水流、溶质运移、根系吸水和溶质吸收、热量传输等的强有力工具。除基础功能以外,该模型还附有一系列扩展…

交叉验证、网格搜索、模型选择与调优、鸢尾花案例增加K值调优与Facebook人造世界签到位置train.csv数据预测代码实现

一、交叉验证 交叉验证(cross validation):将拿到的训练数据分为训练和验证集,以下图为例,将数据分成4份,其中一份作为验证集,经过4次(组)的测试,每次都更换不同的验证集,即得到4组模型的结果&…

One-shot就能做事件抽取?ChatGPT在信息抽取上的强大应用

One-shot就能做事件抽取?ChatGPT在信息抽取上的强大应用0. 前言1. 灵感2. 实验3. 结论0. 前言 近期,OpenAI发布的chat GPT可谓是各种刷屏,很多人都在关注这种模式是否可以应用于搜索引擎,这给做搜索的朋友们带来了很大的危机感。…

强大的VS插件DevExpress CodeRush v22.1 - 让代码编程更智能

DevExpress CodeRush是一个强大的Visual Studio .NET 插件,它利用整合技术,通过促进开发者和团队效率来提升开发者体验。为Visual Studio IDE增压、消除重复的代码并提高代码质量,可以快速思考、自动化测试、可视化调试和重构。 CodeRush v2…

vue学习笔记(一)-vue基础语法

视频教程:尚硅谷Vue2.0Vue3.0全套教程丨vuejs从入门到精通_哔哩哔哩_bilibili 相关文档:Vue核心 Vue简介 初识 (yuque.com) 兼容性 Vue 不支持 IE8 及以下版本,因为 Vue 使用了 IE8 无法模拟的 ECMAScript 5 特性。但它支持所有兼容 ECMAS…

RabbitMQ入门

1. 什么是MQ 消息队列(Message Queue,简称MQ),从字面意思上看,本质是个队列,FIFO先入先出,只不过队列中存放的内容是message而已 作用:应用程序“对”应用程序的通信方法。 2. 应用场景 主要解决异步处理…

pixel 3xl 手机如何烧录自己编译的android 12代码

pixel 3xl 手机如何烧录自己编译的android 12代码 一.查看pixel 3xl手机支持的Android 12版本 通过浏览器访问android版本跟代号网页查看对应的pixel 3XL 手机支持的android 版本跟代号 可以看出,pixel 3XL手机支持Adnroid 12的有Android 12.0.0_r31, Android 12.…

华为机试 - 区间交叠问题

目录 题目描述 输入描述 输出描述 用例 题目解析 算法源码 题目描述 给定坐标轴上的一组线段,线段的起点和终点均为整数并且长度不小于1,请你从中找到最少数量的线段,这些线段可以覆盖柱所有线段。 输入描述 第一行输入为所有线段的数…

键盘输入保护器:KeyScrambler

创新技术屏蔽数字资产 KeyScrambler 开创性的击键加密技术可在 Windows 操作系统、所有浏览器和数百个关键应用程序中实时深入地保护用户键入的信息。 值得信赖的软件让用户安心 KeyScrambler 已经被世界各地的专家、博主和用户测试和使用了 16 年,并被证明对最阴险…

ANSYS_Dsigner仿真串扰

1、边沿RT的大小对串扰的影响 仿真电路如下图所示: V1为V_Pulse电压源,设置如图所示: A4为耦合微带线 这里一定要设置为9.6mil,因为介质厚度我设置的是4.8mil,如果没阻抗匹配会在串扰的基础上增加信号的反射&#xff…

【计算机视觉】完整版复习

计算机标定 齐次坐标 齐次坐标,将欧氏空间的无穷远点,与投影空间中有实际意义的消失点,建立起映射关系。 把齐次坐标转化为笛卡尔坐标的方法:是前面n-1个坐标分量分别除以最后一个分量即可 一些解释和性质: 比较好的…

idea远程debug

有时候我们需要进行远程的debug,本文研究如何进行远程debug,以及使用 IDEA 远程debug的过程中的细节。看完可以解决你的一些疑惑。 1.配置idea 如图,依次点击或者填写对应的ip和端口,需要debug的服务 2.修改启动命令 选择 jdk …

东郊到家、往约到家预约上门理疗按摩系统小程序模式讲解

东郊到家和往约到家都是做上门理疗按摩推拿等服务的线上预约平台,目前已经在全国很多一二线城市都开设了分站,今天我们就来对这两个程序进行讲解。 为什么这类上门服务平台能发展的这么迅速? 一是因为平台成本投入比较低,线上预…

微服务框架 SpringCloud微服务架构 22 DSL 查询语法 22.4 地理查询

微服务框架 【SpringCloudRabbitMQDockerRedis搜索分布式,系统详解springcloud微服务技术栈课程|黑马程序员Java微服务】 SpringCloud微服务架构 文章目录微服务框架SpringCloud微服务架构22 DSL 查询语法22.4 地理查询22.4.1 地理查询22 DSL 查询语法 22.4 地理…

【强化学习论文】多智能体强化学习是一个序列建模问题

文献题目:Multi-Agent Reinforcement Learning is A Sequence Modeling Problem时间:2022代码:https://github.com/PKU-MARL/Multi-Agent-Transformer. 摘要 GPT 系列和 BERT 等大序列模型(SM)在自然语言处理、视觉和…

FL Studio免费升级21完整版新功能新插件介绍

万众期待的 FL Studio 21 版本正式发布上线,所有FL Studio的用户,都可以免费升级到21版! 按照惯例,本次新版也会增加全新插件,来帮助大家更好地创作。今天先给大家分享一下,新增的4款插件简单介绍&#xf…