GO加walk库开发GUI程序 (一)

GO 加 walk 库开发 GUI 程序 (一)

Walk是一个写给Golang的Window应用程序库套件,它主要用于桌面GUI的开发,但也有更多的东西。

划重点:walk是windows上的gui库,不能跨平台。 之后我也会介绍一下相似的,但是可以跨平台的库。

walk 的项目地址: https://github.com/lxn/walk
文档地址:https://godoc.org/github.com/lxn/walk

一、 安装walk模块

默认你是个GO语言的老手,已经配置好了golang的开发环境,有了自己趁手的ide。这里我直接说怎么使用walk开发GUI程序。

在开始之前请确保你的golang版本在1.8之上

Walk官方声明 : 限只支持 golang 1.8.x 以上的版本,1.7.x以下的已经不支持了

go的依赖库有2种安装方式

  1. 第一种,使用go get进行安装
go get github.com/lxn/walk
  1. 第二种,从github下载之后,按如下目录放置 %GOPATH%\src\github.com\lxn\walk

    然后执行 go install github.com\lxn\walk 命令进行安装。

二、创建界面

创建一个项目,并在项目下新建一个main.go文件,main.go 内容如下:

package main

import (
    "strings"

    "github.com/lxn/walk"
    . "github.com/lxn/walk/declarative"
)

func main() {
    var textEdit *walk.TextEdit
    MainWindow{
        Title:   "Walk DropFiles Example",
        MinSize: Size{320, 240},
        Layout:  VBox{},
        OnDropFiles: func(files []string) {
            textEdit.SetText(strings.Join(files, "\r\n"))
        },
        Children: []Widget{
            TextEdit{
                AssignTo: &textEdit,
                ReadOnly: true,
                Text:     "Drop files here, from windows explorer...",
            },
        },
    }.Run()
}

代码写好后,我们直接go build打包是不行的,golang的图形exe需要依赖于manifest 清单文件才能正常运行。要把manifest嵌入exe文件中,还需要一个工具:rsrc

三、安装 rsrc

go get github.com/akavel/rsrc

四、创建 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>

五、生成 rsrc.syso

rsrc -manifest main.manifest -o rsrc.syso

六、打包成exe并去掉cmd守护

go build -ldflags="-H windowsgui"

此时,打开项目下的exe文件运行即可

gui