使用GO开发桌面GUI程序

  • 时间:
  • 浏览:1034
  • 来源:成都艾邦软件开发

使用GO来开发桌面GUI程序个人感觉有几个好处

  1. 静态编译后只生成单个文件。实现小型和工具型程序不需依赖易于分享。
  2. 直接编译为exe等可执行文件不用像PyQt、Electron那样再打包。
  3. 跨平台编译能力同时支持多个跨平台库。
  4. 并发优化协程支持开发多线程GUI程序比Python效率更优。
  5. 语言简单开发难度较C小。

常用的GO-GUI库

  • github.com/andlabs/ui
    跨平台ui库API简单充分体现了GO语言特性。
  • github.com/salviati/go-qt5
    QT的GO绑定。API接近于其他语言绑定。
  • github.com/conformal/gotk3/gtk
    GTK的GO绑定。
  • github.com/lxn/walk
    window平台GUI库。使用类似将数据按结构映射为GUI。

关于gcc编译

GO的很多库安装时自动调用gcc编译。
windows平台下想要支持gcc可以安装MinGW-w64。下载地址/projects/mingw-w64/。
在线安装在境内比较缓慢耐心等待。

我的建议(2019-9-29)

我不是很提倡使用这个GUI库了(原因功能缺陷严重)

因为我发现了一个 功能强大基本上没有缺陷 的GUI库(lxn/walk)

重点它以 Win32 API 做的生成的 exe 很轻量级各种体验都很好

开发前提

Go1.8 以上的版本

WindowsWindows Vista SP2 以上的 Windows 系统

Mac OS XMac OS X 10.8 以上的 Mac 系统

其他操作系统GTK3.10 以上

Debian、Ubuntu 等sudo apt-get install libgtk-3-dev

Red Hat / Fedora 等sudo dnf install gtk3-devel

安装

go get github.com/andlabs/libui

go get github.com/andlabs/ui

代码实例

package main

import (

github.com/andlabs/ui

_ github.com/andlabs/ui/winmanifest

)

func main() {

err : ui.Main(func() {

// 生成文本框

name : ui.NewEntry()

// 生成标签

greeting : ui.NewLabel()

// 生成按钮

button : ui.NewButton(欢迎)

// 设置按钮点击事件

button.OnClicked(func(*ui.Button) {

greeting.SetText(你好 name.Text() )

})

// 生成垂直容器

box : ui.NewVerticalBox()

// 往 垂直容器 中添加 控件

box.Append(ui.NewLabel(请输入你的名字), false)

box.Append(name, false)

box.Append(button, false)

box.Append(greeting, false)

// 生成窗口(标题宽度高度是否有 菜单 控件)

window : ui.NewWindow(你好, 200, 100, false)

// 窗口容器绑定

window.SetChild(box)

// 设置窗口关闭时

window.OnClosing(func(*ui.Window) bool {

// 窗体关闭

ui.Quit()

return true

})

// 窗体显示

window.Show()

})

if err ! nil {

panic(err)

}

}