想尝试用go创建一个桌面应用程序,然后查了下决定用 walk。
我们要先下载walk,这里 官方链接
按照官方文档,我们先用go get命令下载。
go get github.com/lxn/walk
然后分别创建好了 main.go
、main.manifest
文件,代码如下
package main
import (
"github.com/lxn/walk"
. "github.com/lxn/walk/declarative"
"strings"
)
func main() {
var inTE, outTE *walk.TextEdit
MainWindow{
Title: "SCREAMO",
MinSize: Size{600, 400},
Layout: VBox{},
Children: []Widget{
HSplitter{
Children: []Widget{
TextEdit{AssignTo: &inTE},
TextEdit{AssignTo: &outTE, ReadOnly: true},
},
},
PushButton{
Text: "SCREAM",
OnClicked: func() {
outTE.SetText(strings.ToUpper(inTE.Text()))
},
},
},
}.Run()
}
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<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>
<application xmlns="urn:schemas-microsoft-com:asm.v3">
<windowsSettings>
<dpiAwareness xmlns="http://schemas.microsoft.com/SMI/2016/WindowsSettings">PerMonitorV2, PerMonitordpiAwareness>
<dpiAware xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">TruedpiAware>
windowsSettings>
application>
assembly>
之后,再按照官方说的,下载 rsrc 工具
go get github.com/akavel/rsrc
下载好后,在终端执行如下命令:
rsrc -manifest main.manifest -o rsrc.syso
然后就报错了,提示:无法将“rsrc”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。
之后我又尝试在项目目录里面,打开cmd窗口,执行 rsrc -manifest main.manifest -o rsrc.syso
,发现还是不行:rsrc不是内部或外部命令。
我直接云里雾里,咋回事?为啥不行?然后我百度别人怎么用walk的,还是没找到问题,为啥他们可以我一样的步骤一样的代码就不行?
之后,我去问ai,说我没有正确安装rsrc工具,我寻思怎么就没有正确安装了?不是用go get命令安装吗,我也是这么安装的呀?
啊?要bin目录有rsrc才行?可是我执行go get后,只有pkg目录有下载rsrc的源码,bin目录,啥也没有。
然后我继续问,说环境变量要指定bin目录才行。如下:
gopath不用说,在一开始安装go语言环境的时候就配置了的,但是我没想到gobin还需要单独配置。配置完后(有些电脑,配置完了可能需要重启才会生效),打开cmd,输入:go env
命令执行,如下:
这些都是我们自己配置的目录。
配置好后,我再去执行 go get github.com/akavel/rsrc
,发现bin目录下,还是没有rsrc工具,继续问ai。
然后我们去 pkg 目录下,找到 rsrc 的源码目录:
在这个目录下,打开cmd,执行:go install
然后我们去bin目录,就发现有一个 rsrc.exe
文件了。
最后,我们再返回到项目里,在终端执行 rsrc -manifest main.manifest -o rsrc.syso
,这样就不会报错了。
执行完这步操作,我们编译main.go,得到了一个 main.exe
程序,然后把 main.manifest
重命名为 main.exe.manifest
,把 main.exe.manifest
放到和 main.exe
同一个目录下后,双击运行 main.exe,就会弹窗一个窗口。
运行:
ok,以上,我们就创建了第一个go桌面程序,接下来就可以愉快地写代码了~