说到golang的gui,就会想到:它不是为这个而生的。
但这却是实际的需求,还要求程序员再去学一个语言去前端GUI,那确实还是不太友好的。所以还是趋向于在Golang本身解决。
于是,fyne,qt,walk找了一圈,问题在于:
-
配置开发环境麻烦:go的使用者应该是洁癖居多吧,完全不符合即装即用的原则。
-
居然不支持中文输入:fyne是支持中文显示的,但你不支持中文输入,拿你有何用?(我只能说我不会用,但真的不要让大家太难学)
-
跨平台性弱:编译一个跨平台版本还有n多手续要办,这也不是go的风格
-
只支持Win:都不知道说什么好了
-
开发/支持:开发者的不断更新,支持者众多,都是后续改进的保证。
-
需要某某环境支持:例如chrome浏览器支持,我暂时只装了FireFox,并不是说它多优秀。
-
需要众多的周边文件:配置文件、其它程序、自开发的程序
-
收费:这个…
现在的解决方案:
- HTML即浏览器作为前台GUI
只是对浏览器的适配是比较麻烦的事,一般都以Firefox和Chrome为主,IE这种自以为是的标准,只能舍弃。
- Godot大材小用做GUI
这是最近研究的方案。godot具有跨平台,干净的特点。它原本是游戏开发引擎,拿来作为前端GUI算是大材小用。另外,它也可以导出为H5的程序(WebAssembly),安卓、iOS
虽然最终还是没有在Go本身找到解决方法,但这个对我是相对比较实际的。
这里做了一个示例,想通过示例来验证可行性,没有具体的实现功能。详情也可以看这里
导出后,有几个文件:
- GUI主程序
- pck库文件 (素材等资源包,godot标准输出)
- set.cfg (程序的配置文件)
- theme.tres (样式文件)
- yahei.ttf (字体文件)
- login_bg.jpg (背景图)
- server后台服务程序 (golang完成的一些后台支持功能)
说明:
- 现在是将theme.tres,bg.jpg写死到程序中的,当然应该搬到set.cfg中。
- GUI主程序也可以默认带一套样式及字体,现在没有4.5.6也能正常运行,只是没有汉字字库可是比较郁闷的样子。
- 若UPX,可能导致运行程序与配套文件不在同一个目录,从而导致样式走样。
下载:
这里打包了Linux64和Win64的版本可以测试,38MB。
Golang后台程序很简单,直接给了源代码。
Win下我没有测试。