1、封閉環境首先得GO111MODULE、GOPROXY,參考我之前文章https://www.cnblogs.com/pu369/p/12068645.html
2、前置安裝
go get github.com/akavel/rsrc go get github.com/lxn/win go get github.com/lxn/walk
由於我是在liteide下,按CTRL+B 時自動生成了go.mod和go.sum;就不用自己運行go mod命令了。
3、代碼實例:
由於參考網上代碼不成功,改用以下辦法測試
將go get 得到的pkg\mod\github.com\lxn\walk@v0.0.0-20191128110447-55ccb3a9f5c1\examples\filebrowser下面的
filebrowser.go和rsrc.syso復制到自己的項目目錄(如:名為gowalk)下,並將filebrowser.go改名為main.go
4、在自己的項目目錄(如:名為gowalk)下,cmd命令行,正式編譯
go build -ldflags="-H windowsgui -w -s"
(也可在liteid中設置BUILDAGRS 后添加 -ldflags "-H windowsgui" ,參考我之前寫的https://www.cnblogs.com/pu369/p/10336699.html)
5、雙擊生成的EXE運行,成功。
據說不動態添加控件的話,可在布局 Children: []Widget 中或者QT設計器設計UI文件,然后加載。
6、最終測試代碼:
// Copyright 2011 The Walk Authors. All rights reserved. // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. package main import ( "log" "time" ) import ( "github.com/lxn/walk" . "github.com/lxn/walk/declarative" ) func main() { var mainWindow *walk.MainWindow var a *walk.PushButton if err := (MainWindow{ AssignTo: &mainWindow, Title: "Walk File Browser Example", MinSize: Size{600, 400}, Size: Size{1024, 640}, Layout: HBox{MarginsZero: true}, Children: []Widget{ PushButton{ Text: "點擊我修改按鈕標題", AssignTo: &a, OnClicked: func() { update(a) //方法1。或者直接把a作為全局變量,無需傳遞a 。或者直接定義結構體,添加方法。 }, }, }, }.Create()); err != nil { log.Fatal(err) } mainWindow.Run() } func update(a *walk.PushButton) { a.SetText("點擊我修改按鈕標題" + time.Now().String()) }
參考:https://www.jianshu.com/p/28f371a378f0
https://my.oschina.net/u/248241/blog/861841