安装库
CMD执行:go get github.com/lxn/walk
库的GitHub项目
简单的例子与编译演示
代码源文件:main.go
package main
import (
"github.com/lxn/walk"
. "github.com/lxn/walk/declarative"
"strings"
)
func main() {
var inTE, outTE *walk.TextEdit
MainWindow{
Title: "窗口标题",
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()
}
编译所需配置文件:main.exe.manifest或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>
编译的两种方法
- 方法一:打包成单独的exe
这种打包方法需要安装另一个库:rsrc
cmd执行:
go get github.com/akavel/rsrc
配置文件命名为:源文件名.manifest
cmd执行:
rsrc -manifest 源文件名.manifest -o rsrc.syso
编译:
go build
或者
go build -ldflags="-H windowsgui"
前者运行时会有黑窗口,后者隐藏
正常运行要求:exe文件
- 方法二:打包成一个exe与配置文件
配置文件命名为:源文件名.exe.manifest
编译:
go build
或者
go build -ldflags="-H windowsgui"
前者运行时会有黑窗口,后者隐藏
正常运行要求:exe文件+源文件名.exe.manifest文件
- 注意:测试环境是配置文件和源文件在同一路径,cmd执行的路径也在该路径