zoukankan      html  css  js  c++  java
  • 使用golang制作windows GUI图形界面 — Walk

    最近在学golang,想着能否用golang来开发一个Windows图形界面软件,就开始上网找资料,查到golang有一个Walk库可以实现该功能,下面就来认识下golang的Walk。

    关于Walk界面库(官方介绍):

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

    开始前我们要先注意,Walk官方声明,限只支持 golang 1.8.x 以上的版本,1.7.x以下的已经不支持了

    1.我们需要先安装Walk库,运行以下命令

      

    go get github.com/lxn/walk
    

     因github国外服务器原因,安装时间可能需要几十秒,要耐心等待下

    2.walk库安装好后,我们在项目下建立一个 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()
    }
    

     代码写好后,我们直接go build打包是不行的,golang的图形exe需要依赖于manifest才能正常运行。而go却没有提供资源打包的所有功能,所以要把manifest嵌入exe文件中,还需要一个工具:rsrc。

    3.我们安装一个工具rsrc

    go get github.com/akavel/rsrc
    

    4.rsrc工具安装好后,我们还需建一个manifest文件 test.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>
    

    5.生成 rsrc.syso

    rsrc -manifest test.manifest -o rsrc.syso
    

    6.然后打包成exe文件

    go build
    

     此时打开exe,会带着cmd命令窗口,接下来我们把这命令窗口去除

    go build -ldflags="-H windowsgui"
    

      然后再打开exe就可以了。

  • 相关阅读:
    Spring@Profile注解
    day 32 子进程的开启 及其用法
    day 31 udp 协议SOCK_DGRAM
    day 30 客户端获取cmd 命令的步骤
    day 29 socket 理论
    day 29 socket 初级版
    有关 组合 继承
    day 27 多态 接口 类方法 静态方法 hashlib 摘要算法模块
    新式类和经典类的区别
    day 28 hasattr getattr serattr delattr 和带__内置__ 类的内置方法
  • 原文地址:https://www.cnblogs.com/sbman/p/9366530.html
Copyright © 2011-2022 走看看