(原) 说说Golang的Gui编程及解决方案

原创文章,请后转载,并注明出处。

说到golang的gui,就会想到:它不是为这个而生的。

但这却是实际的需求,还要求程序员再去学一个语言去前端GUI,那确实还是不太友好的。所以还是趋向于在Golang本身解决。

于是,fyne,qt,walk找了一圈,问题在于:

  1. 配置开发环境麻烦:go的使用者应该是洁癖居多吧,完全不符合即装即用的原则。

  2. 居然不支持中文输入:fyne是支持中文显示的,但你不支持中文输入,拿你有何用?(我只能说我不会用,但真的不要让大家太难学)

  3. 跨平台性弱:编译一个跨平台版本还有n多手续要办,这也不是go的风格

  4. 只支持Win:都不知道说什么好了

  5. 开发/支持:开发者的不断更新,支持者众多,都是后续改进的保证。

  6. 需要某某环境支持:例如chrome浏览器支持,我暂时只装了FireFox,并不是说它多优秀。

  7. 需要众多的周边文件:配置文件、其它程序、自开发的程序

  8. 收费:这个…

现在的解决方案

  1. HTML即浏览器作为前台GUI

只是对浏览器的适配是比较麻烦的事,一般都以Firefox和Chrome为主,IE这种自以为是的标准,只能舍弃。

  1. Godot大材小用做GUI

这是最近研究的方案。godot具有跨平台,干净的特点。它原本是游戏开发引擎,拿来作为前端GUI算是大材小用。另外,它也可以导出为H5的程序(WebAssembly),安卓、iOS

虽然最终还是没有在Go本身找到解决方法,但这个对我是相对比较实际的。


这里做了一个示例,想通过示例来验证可行性,没有具体的实现功能。详情也可以看这里

导出后,有几个文件:

  1. GUI主程序
  2. pck库文件 (素材等资源包,godot标准输出)
  3. set.cfg (程序的配置文件)
  4. theme.tres (样式文件)
  5. yahei.ttf (字体文件)
  6. login_bg.jpg (背景图)
  7. server后台服务程序 (golang完成的一些后台支持功能)

说明:

  1. 现在是将theme.tres,bg.jpg写死到程序中的,当然应该搬到set.cfg中。
  2. GUI主程序也可以默认带一套样式及字体,现在没有4.5.6也能正常运行,只是没有汉字字库可是比较郁闷的样子。
  3. 若UPX,可能导致运行程序与配套文件不在同一个目录,从而导致样式走样。

下载:

这里打包了Linux64和Win64的版本可以测试,38MB。

Golang后台程序很简单,直接给了源代码。

Win下我没有测试。

相关文章