Golang中推荐使用的GUI工具有哪些

Golang中推荐使用的GUI工具有哪些 我不想要基于Web的应用程序,也不想用JavaScript。 我可以使用哪个与Go语言配合良好的GUI工具包?

2 回复

你好 @devosalain

我脑海中唯一能想到的非Web风格的Go GUI工具包是Fyne。它是一个面向桌面和移动应用的本地优先GUI框架。

更多关于Golang中推荐使用的GUI工具有哪些的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


在Go语言中,有几个成熟的GUI工具包可供选择,它们不依赖Web技术或JavaScript。以下是三个主流选项,各有特点:

1. Fyne - 跨平台原生UI

基于OpenGL,提供Material Design风格,适合现代应用。

package main
import "fyne.io/fyne/v2/app"
import "fyne.io/fyne/v2/container"
import "fyne.io/fyne/v2/widget"

func main() {
    myApp := app.New()
    myWindow := myApp.NewWindow("Fyne示例")
    
    label := widget.NewLabel("Hello Fyne!")
    button := widget.NewButton("点击", func() {
        label.SetText("按钮已点击")
    })
    
    myWindow.SetContent(container.NewVBox(label, button))
    myWindow.ShowAndRun()
}

2. Go-GTK - GTK3绑定

适合需要Linux桌面原生集成或熟悉GTK的开发者。

package main
import "github.com/gotk3/gotk3/gtk"

func main() {
    gtk.Init(nil)
    
    win, _ := gtk.WindowNew(gtk.WINDOW_TOPLEVEL)
    win.SetTitle("GTK3示例")
    win.Connect("destroy", gtk.MainQuit)
    
    btn, _ := gtk.ButtonNewWithLabel("点击我")
    btn.Connect("clicked", func() {
        btn.SetLabel("已点击")
    })
    
    win.Add(btn)
    win.SetDefaultSize(300, 200)
    win.ShowAll()
    gtk.Main()
}

3. andlabs/ui - 轻量级原生控件

提供各平台原生控件,但已停止维护,适合简单需求。

package main
import "github.com/andlabs/ui"

func main() {
    err := ui.Main(func() {
        window := ui.NewWindow("UI示例", 300, 200, false)
        button := ui.NewButton("点击")
        label := ui.NewLabel("等待点击...")
        
        button.OnClicked(func(*ui.Button) {
            label.SetText("按钮被点击")
        })
        
        box := ui.NewVerticalBox()
        box.Append(button, false)
        box.Append(label, false)
        
        window.SetChild(box)
        window.OnClosing(func(*ui.Window) bool {
            ui.Quit()
            return true
        })
        window.Show()
    })
    if err != nil {
        panic(err)
    }
}

选择建议:

  • Fyne:目前最活跃,文档完善,适合新项目
  • Go-GTK:需要深度Linux桌面集成时使用
  • andlabs/ui:仅适合维护旧项目

所有工具包都支持Windows、macOS和Linux,编译后生成完全原生应用,不依赖浏览器或JavaScript运行时。

回到顶部