圖形使用者介面1:初識Walk

尹成發表於2018-11-16

GO語言的圖形介面庫Walk簡介
GO沒有原生的介面庫,所以不能直接用來寫GUI介面。但最近網際網路上已經湧現出不少成熟、好用的第三方介面庫。使用它們,就同樣可以寫出同C#、C++的介面。而且效率還更勝一籌。

關於Walk介面庫(官方介紹):Walk是一個寫給Golang的Window應用程式庫套件,它主要用於桌面GUI的開發,但也有更多的東西。

###安裝Walk
在瀏覽這部分前,請確定已經配置安裝完畢go語言的環境。如果沒有,可以參考go官網的Install幫助。另外,注意:這個Walk庫只能執行在Go 1.1.x及以上。

要安裝Walk很簡單,只要執行命令:go get github.com/lxn/walk

等待命令執行完畢,這時候檢查GOPATH的src與pkg下,是否有符合自己計算機環境的walk目錄。(我的電腦的CPU架構為AMD64,則會在%GOPATH%\windows_amd64\github.com\lxn下出現一個walk資料夾與編譯完成的a檔案,另外在%GOPATH%\src\github.com\lxn下也會出現walk的原始碼)

匯入依賴

import (
	//引入walk包
	"github.com/lxn/walk"
	//declarative包下包含大量控制元件,加一個點:使用包內的成員時可以省略包名
	."github.com/lxn/walk/declarative"
	"strings"
)

官方的入門Demo

func main() {

	//宣告兩個文字域控制元件
	var inTE, outTE *walk.TextEdit

	//配置主視窗,並執行起來
	MainWindow{

		//視窗標題
		Title:   "尖叫的Demo",

		//可拉伸的最小尺寸
		MinSize: Size{600, 400},

		//主佈局:垂直佈局
		Layout:  VBox{},

		//視窗中的所有控制元件
		Children: []Widget{

			//水平分割器(水平小布局)
			HSplitter{

				//區域性水平排列的控制元件們
				Children: []Widget{
					//文字輸入框
					TextEdit{
						//繫結到inTE變數
						AssignTo: &inTE},

					//文字輸出框
					TextEdit{
						AssignTo: &outTE,
						//只讀的文字框
						ReadOnly: true},
				},

			},

			//普通按鈕
			PushButton{

				//按鈕文字
				Text: "動動我試試",

				//響應函式
				OnClicked: func() {
					inputStr := inTE.Text()
					outputStr := strings.ToUpper(inputStr)
					outTE.SetText(outputStr)
				},
			},

		},

	}.Run()
}

配置檔案

  • 命名為xxx.exe.manifest,放置在程式包的根目錄下
  • xxx.exe即為程式編譯形成的可執行程式名稱
  • 該配置檔案作用是執行時向Windows作業系統尋求一些支援和依賴,內容可以無需修改
<?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>

執行Hello程式

go get github.com/lxn/walk
  • 拷貝類庫首頁(https://github.com/lxn/walk)的Hello程式程式碼到自己的go檔案
  • 從類庫程式碼包的examples下的任意應用程式資料夾下拷貝一個系統依賴配置檔案(xxx.exe.manifest)到自己的go檔案所在的目錄下,重新命名為hello.exe.manifest,後續可執行程式的名字就必須叫hello.exe
  • 編譯形成hello.exe,-ldflags="-H windowsgui"代表遮蔽控制終端(控制終端可以在測試階段檢視除錯資訊)
go build -o hello.exe -ldflags="-H windowsgui"
  • 執行hello.exe

學院Go語言視訊主頁
https://edu.csdn.net/lecturer/1928

[清華團隊帶你實戰區塊鏈開發]

(https://ke.qq.com/course/344443?tuin=3d17195d)
掃碼獲取海量視訊及原始碼 QQ群:721929980
在這裡插入圖片描述

相關文章