Golang GUI入门——andlabs ui

2024-09-08 12:58
文章标签 golang 入门 ui gui andlabs

本文主要是介绍Golang GUI入门——andlabs ui,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

官方不提供gui标准库,只好寻求第三方库。
https://github.com/google/gxui 这个gui库是谷歌内部人员提供的,并不是谷歌官方出品,现在停止维护,只好作罢。

第三方gui库

找了好多,也比较了好多,最终决定使用的是还是
https://github.com/andlabs/ui
相信golang gui还会发展的更好,期待更优秀的gui库
由于andlabs-ui是基于andlabs-libuip写的,所以还需要
https://github.com/andlabs/libui

其它一些三方gui库,可查看
http://awesome-go.com/#gui

安装gui库

方式一:可能通过github网站,直接下载ui、libui两个库的zip包,然后放到你go的工作目录下,然后引用即可。
方式二:通过执行命令go get github.com/andlabs/ui、go get github.com/andlabs/libui直接下载到go工作目录下。
方式三:通过git clone到本地,再放到go工作目录下。

执行例子

测试代码:
main.go

package mainimport ("github.com/andlabs/ui"
)func main() {err := ui.Main(func() {name := ui.NewEntry()button := ui.NewButton("Greet")greeting := ui.NewLabel("")box := ui.NewVerticalBox()box.Append(ui.NewLabel("Enter your name:"), false)box.Append(name, false)box.Append(button, false)box.Append(greeting, false)window := ui.NewWindow("Hello", 200, 100, false)window.SetChild(box)button.OnClicked(func(*ui.Button) {greeting.SetText("Hello, " + name.Text() + "!")})window.OnClosing(func(*ui.Window) bool {ui.Quit()return true})window.Show()})if err != nil {panic(err)}
}

go run 执行测试代码

C:\Users\aaron>go run E:\0Develop\Go\work\src\gui-temp\main.go# github.com/andlabs/ui
E:/0Develop/Go/work/src/github.com/andlabs/ui/libui_windows_amd64.a(stddialogs.cpp.obj): In function `msgbox':E:/github.com/andlabs/libui/windows/stddialogs.cpp:113: undefined reference to `__imp_TaskDialog'
collect2.exe: error: ld returned 1 exit status

抛出异常!

解决undefined reference to `__imp_TaskDialog’

看问题讨论
https://github.com/andlabs/ui/issues/147
https://github.com/andlabs/ui/issues/190

windows需要的一些环境。
https://github.com/andlabs/ui/issues/159


windows下这个问题仍然解决不了,得找其它gui了。
有朋友如果知道怎么解决这个问题,也麻烦告知一下,谢谢。

这篇关于Golang GUI入门——andlabs ui的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1148171

相关文章

从入门到精通C++11 <chrono> 库特性

《从入门到精通C++11<chrono>库特性》chrono库是C++11中一个非常强大和实用的库,它为时间处理提供了丰富的功能和类型安全的接口,通过本文的介绍,我们了解了chrono库的基本概念... 目录一、引言1.1 为什么需要<chrono>库1.2<chrono>库的基本概念二、时间段(Durat

Golang如何对cron进行二次封装实现指定时间执行定时任务

《Golang如何对cron进行二次封装实现指定时间执行定时任务》:本文主要介绍Golang如何对cron进行二次封装实现指定时间执行定时任务问题,具有很好的参考价值,希望对大家有所帮助,如有错误... 目录背景cron库下载代码示例【1】结构体定义【2】定时任务开启【3】使用示例【4】控制台输出总结背景

Golang如何用gorm实现分页的功能

《Golang如何用gorm实现分页的功能》:本文主要介绍Golang如何用gorm实现分页的功能方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录背景go库下载初始化数据【1】建表【2】插入数据【3】查看数据4、代码示例【1】gorm结构体定义【2】分页结构体

解析C++11 static_assert及与Boost库的关联从入门到精通

《解析C++11static_assert及与Boost库的关联从入门到精通》static_assert是C++中强大的编译时验证工具,它能够在编译阶段拦截不符合预期的类型或值,增强代码的健壮性,通... 目录一、背景知识:传统断言方法的局限性1.1 assert宏1.2 #error指令1.3 第三方解决

在Golang中实现定时任务的几种高效方法

《在Golang中实现定时任务的几种高效方法》本文将详细介绍在Golang中实现定时任务的几种高效方法,包括time包中的Ticker和Timer、第三方库cron的使用,以及基于channel和go... 目录背景介绍目的和范围预期读者文档结构概述术语表核心概念与联系故事引入核心概念解释核心概念之间的关系

从入门到精通MySQL 数据库索引(实战案例)

《从入门到精通MySQL数据库索引(实战案例)》索引是数据库的目录,提升查询速度,主要类型包括BTree、Hash、全文、空间索引,需根据场景选择,建议用于高频查询、关联字段、排序等,避免重复率高或... 目录一、索引是什么?能干嘛?核心作用:二、索引的 4 种主要类型(附通俗例子)1. BTree 索引(

Redis 配置文件使用建议redis.conf 从入门到实战

《Redis配置文件使用建议redis.conf从入门到实战》Redis配置方式包括配置文件、命令行参数、运行时CONFIG命令,支持动态修改参数及持久化,常用项涉及端口、绑定、内存策略等,版本8... 目录一、Redis.conf 是什么?二、命令行方式传参(适用于测试)三、运行时动态修改配置(不重启服务

MySQL DQL从入门到精通

《MySQLDQL从入门到精通》通过DQL,我们可以从数据库中检索出所需的数据,进行各种复杂的数据分析和处理,本文将深入探讨MySQLDQL的各个方面,帮助你全面掌握这一重要技能,感兴趣的朋友跟随小... 目录一、DQL 基础:SELECT 语句入门二、数据过滤:WHERE 子句的使用三、结果排序:ORDE

Golang 日志处理和正则处理的操作方法

《Golang日志处理和正则处理的操作方法》:本文主要介绍Golang日志处理和正则处理的操作方法,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考... 目录1、logx日志处理1.1、logx简介1.2、日志初始化与配置1.3、常用方法1.4、配合defer

VS配置好Qt环境之后但无法打开ui界面的问题解决

《VS配置好Qt环境之后但无法打开ui界面的问题解决》本文主要介绍了VS配置好Qt环境之后但无法打开ui界面的问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要... 目UKeLvb录找到Qt安装目录中designer.UKeLvBexe的路径找到vs中的解决方案资源