Go語言:Windows下最能湊合用的桌面GUI庫(lxn/walk 起步教程)


 

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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM