/walk

A Windows GUI toolkit for the Go Programming Language,这里我们将在代码中做出中文注释,方便理解和使用。

Primary LanguageGoOtherNOASSERTION

About Walk 关于Walk

Walk is a "Windows Application Library Kit" for the Go Programming Language.

Walk是Go语言的一个windows应用程序库控件。

Its primarily useful for Desktop GUI development, but there is some more stuff.

它主要是用来桌面界面开发,当然,还有更多的一些功能。

Setup  安装

Make sure you have a working Go installation. See Getting Started

确保你已经安装了可以使用的Go软件。

Note 注释

Go 1.7.x doesn't work with walk anymore, Make sure you use Go 1.8.x or later. 1.7版已经不被支持了,你需要安装1.8之后的版本。

To Install 安装walk

Now run go get github.com/lxn/walk 打开cmd输入“go get github.com/lxn/walk”

Using Walk 使用walk

The preferred way to create GUIs with Walk is to use its declarative sub package, as illustrated in this small example: 用walk来创建桌面应用界面,先引用它的子包declarative,像下面的例子一样。

test.go
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()
}
Create Manifest test.manifest 创建Manifest文件“test.manifest”
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <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>
    </assembly>

Then either compile the manifest using the rsrc tool, like this:

go get github.com/akavel/rsrc
rsrc -manifest test.manifest -o rsrc.syso

or rename the test.manifest file to test.exe.manifest and distribute it with the application instead.

Build app 编译程序

In the directory containing test.go run 在test.go的当前目录进行 go build

To get rid of the cmd window, instead run 去掉cmd窗口,你这样编译 go build -ldflags="-H windowsgui"

Run app 运行程序
test.exe
Sample Output (Windows 7)

alt tag

More Examples 更多的例子

There are some examples that should get you started.

Application Manifest Files

Walk requires Common Controls 6. This means that you must put an appropriate application manifest file either next to your executable or embedded as a resource.

You can copy one of the application manifest files that come with the examples.

To embed a manifest file as a resource, you can use the rsrc tool.

IMPORTANT: If you don't embed a manifest as a resource, then you should not launch your executable before the manifest file is in place. If you do anyway, the program will not run properly. And worse, Windows will not recognize a manifest file, you later drop next to the executable. To fix this, rebuild your executable and only launch it with a manifest file in place.

Program Crashes

By default Go uses os threads with small stack sizes of 128KB. If your walk app crashes, it may be due to a stack overflow. Until a better solution is found, you can work around this by adding

import _ "runtime/cgo"

somewhere in your program. If you don't have gcc installed and on your PATH, you can alternatively add -linkmode internal to the -ldflags of your go build command like so:

go build -ldflags="-H windowsgui -linkmode internal"