发布时间:2025-12-10 19:16:34 浏览次数:5
用 go 开发一个漂亮的 桌面客户端软件_如何将软件放到桌面Walk是一个写给Golang的Window应用程序库套件,它主要用于桌面GUI的开发,但也有更多的东西。划重点:walk是windows上的gui库,不能跨平台。不过受益于golang语言的特性,最终打包体积很小,界面颜值也很高,如果只在windows上用用,那还是非常棒的。walk的项目
Walk是一个写给Golang的Window应用程序库套件,它主要用于桌面GUI的开发,但也有更多的东西。
划重点:walk是windows上的gui库,不能跨平台。 不过受益于golang语言的特性,最终打包体积很小,界面颜值也很高,如果只在windows上用用,那还是非常棒的。
walk 的项目地址: https://github.com/lxn/walk
文档地址:https://godoc.org/github.com/lxn/walk
默认你是个GO语言的老手,已经配置好了golang的开发环境,有了自己趁手的ide。这里我直接说怎么使用walk开发GUI程序。
在开始之前请确保你的golang版本在1.11之上
Walk官方声明 : 限只支持 golang 1.11.x 以上的版本,1.11.x以下的已经不支持了
go的依赖库有2种安装方式
第一种,使用go get进行安装go get github.com/lxn/walk【正版授权,激活自己账号】:Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
第二种,从github下载之后,按如下目录放置 %GOPATH%\src\github.com\lxn\walk ,
然后执行 go install github.com\lxn\walk 命令进行安装。
作为一个文件上传的客户端,支持两种方式上传文件
快捷键直接上传 拖动文件到指定区域上传软件启动后直接最小化到系统托盘,支持在托盘图标上右键打开菜单,选择进入主界面,进行秘钥配置和文件拖动上传等功能。
创建一个空目录ossTool,进入该目录使用 go mod init 初始化项目。
在项目下新建一个main.go文件,作为主函数,监听系统快捷键和生成托盘图标、监听点击事件等,main.go 内容如下:
package mainimport ("fmt""ossTool/views""github.com/MakeNowJust/hotkey""github.com/getlantern/systray")func main() {//RunHomeWindow(); //运行主窗口//启动快捷键监听go func() {hkey := hotkey.New()hkey.Register(hotkey.Ctrl, 'U', func() {fmt.Println("Push Ctrl+U")})}()systray.Run(views.OnReady, views.OnExit) //运行托盘菜单} 在系统托盘中,定义图标、标题和提示文字
systray.SetTemplateIcon(appIcon.LogoIcon, appIcon.LogoIcon)systray.SetTitle("OssTool")systray.SetTooltip("OssTool") 定义托盘图标的右键菜单
runWindow := systray.AddMenuItem("主界面", "Open the main window")systray.AddSeparator()mdCopy := systray.AddMenuItem("复制md格式", "copy for markdown")systray.AddSeparator()mURL := systray.AddMenuItem("文档地址", "visit the home page")systray.AddSeparator()mQuit := systray.AddMenuItem("退出程序", "Quit the whole app") 异步监听托盘图标的菜单项点击事件
go func() {for {select {case <-runWindow.ClickedCh:go func() {RunHomeWindow(mw) //运行主窗口}()case <-mdCopy.ClickedCh:if mdCopy.Checked() {mdCopy.Uncheck() //取消选中mdFlag = false} else {mdCopy.Check() //选中mdFlag = true}case <-mURL.ClickedCh:open.Run("https://www.cnblogs.com/ludg/")case <-mQuit.ClickedCh:systray.Quit() //退出托盘return}}}() 菜单栏中,点击选项可配置oss的授权信息
代码写好后,我们直接go build打包是不行的,golang的图形exe需要依赖于manifest 清单文件才能正常运行。要把manifest嵌入exe文件中,还需要一个工具:rsrc 。
go get github.com/akavel/rsrc 在项目根目录下创建 main.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> rsrc -manifest main.manifest -o rsrc.syso go build -ldflags="-H windowsgui" 此时,打开项目下的exe文件运行即可