go 第三方GUI和编译andlabs/ui、andlabs/libui在win10的部署使用

go 第三方GUI和编译 andlabs/ui、andlabs/libui在win10的部署使用

1.下载安装andlabs/ui、andlabs/libui

项目终端中(输入命令):

go get github.com/andlabs/ui
go
get github.com/andlabs/libui

会在gopath路径/src/github.com/andlabs下
或者手动在github下载放进来也成的哈;目录结构如图:
在这里插入图片描述

报错:

github.com/andlabs/ui

exec: “gcc”: executable file not found in %PATH%

没有针对c语言的gcc,安装一个

github.com/andlabs/ui

D:/sdk/go1.13.4/bin/src/github.com/andlabs/ui/libui_windows_amd64.a(stddialogs.cpp.obj): In function msgbox': C:/projects/libui/windows/stddialogs.cpp:113: undefined reference to__imp_TaskDialog’
collect2.exe: error: ld returned 1 exit status

安装mingw64(这个是重点): http://www.msys2.org/

2.下载配置gcc环境:

将下载的 msys2-x86_64-版本号xxx.exe 安装在 C:/msys64/ 目录下

pacman 命令警告:无法获取某些文件 错误:无法提交处理 (下载数据库出错) 发生错误,没有软件包被更新

无法从 sourceforge.net : Resolving timed out after 10000 milliseconds 获取文件

pacman -Sy

pacman -S --needed filesystem msys2-runtime bash libreadline libiconv libarchive libgpgme libcurl pacman ncurses libintl

pacman -S mingw-w64-x86_64-gcc

不断地重试,直到正常安装完依赖和gcc即可

添加到环境变量

C:\msys64\mingw64\bin

3.编码编译

编译代码 不带控制台

go build -ldflags="-H windowsgui" guiTest.go

添加图标,只支持ico,失败:不能生成syso文件,先按下;

demo效果没放上来,想做出一个小工具在说。
在这里插入图片描述

guiCountTime.go

package main

import (
	"github.com/andlabs/ui"
	_ "github.com/andlabs/ui/winmanifest"
	"strconv"
	"time"
)

/*andlabs这个gui库缺点太大,最不能容忍的是组件缺少,窗口属性缺少,就连颜色什么的也没有,可以说是相当鸡肋了,可以弃用*/

func main() {
	err := ui.Main(func() {
		box := ui.NewVerticalBox() // 生成:垂直容器
		weekday := time.Now().Weekday()
		greet := ui.NewLabel("阖家团圆")
		box.Append(greet, false)
		content := "今天是" + weekday.String() + ",要开心哦~"
		greet.SetText(content)
		box.Append(ui.NewHorizontalSeparator(), false) // 分割线
		// 日期时间
		box.Append(ui.NewLabel("起始时间"), false)
		t1 := ui.NewDateTimePicker()
		box.Append(t1, false)
		box.Append(ui.NewLabel("终止时间"), false)
		t2 := ui.NewDateTimePicker()
		box.Append(t2, false)

		countButton := ui.NewButton("计算时差")
		result := ui.NewEntry()
		result.SetReadOnly(true)
		box.Append(countButton, false)
		box.Append(result, false)
		countButton.OnClicked(func(*ui.Button) {
			sumM := t2.Time().Sub(t1.Time()).Minutes()
			res := strconv.FormatFloat(sumM, 'f', -1, 64)
			res = res + string("分钟")
			result.SetText(res)
		})
		// 生成:窗口(标题,宽度,高度,是否有 菜单 控件)
		window := ui.NewWindow(`Time Count Tools`, 250, 150, true)
		window.SetChild(box)                     // 窗口容器绑定
		window.OnClosing(func(*ui.Window) bool { // 设置:窗口关闭时
			ui.Quit() // 窗体关闭
			return true
		})
		// 窗体显示
		window.Show()
	})
	if err != nil {
		panic(err)
	}
}

执行命令go build -ldflags="-H windowsgui" guiCountTime.go即可编辑成guiCountTime.exe,并且不带console控制台。

4.总结

如代码中的注释:andlabs这个go gui语言的三方库不值得学习和入门,有时间我会再尝试玩一下其他gui库,虽然这样了解和使用go语言不是一个好的方法。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值