linux

Go语言在Linux系统下的图形界面开发怎么做

小樊
47
2025-09-18 16:59:33
栏目: 编程语言

在Linux系统下使用Go语言进行图形界面(GUI)开发,可以选择多种框架和库。以下是一些流行的选择:

1. Fyne

Fyne 是一个用 Go 编写的原生跨平台 GUI 工具包。它提供了丰富的组件和布局管理器,支持 Windows、macOS 和 Linux。

安装 Fyne

go get fyne.io/fyne/v2

示例代码

package main

import (
	"fyne.io/fyne/v2/app"
	"fyne.io/fyne/v2/container"
	"fyne.io/fyne/v2/widget"
)

func main() {
	a := app.New()
	w := a.NewWindow("Hello")

	hello := widget.NewLabel("Hello Fyne!")
	w.SetContent(container.NewVBox(
		hello,
		widget.NewButton("Hi!", func() {
			hello.SetText("Welcome :)")
		}),
	))

	w.ShowAndRun()
}

2. GTK

GTK 是一个用于创建图形用户界面的多平台工具包。Go 语言可以通过 gioui 库来使用 GTK。

安装 GTK 和 gioui

sudo apt-get install libgtk-3-dev
go get -u fyne.io/gioui

示例代码

package main

import (
	"fyne.io/gioui/app"
	"fyne.io/gioui/layout"
	"fyne.io/gioui/widget"
	"fyne.io/gioui/runtime/linux"
	"os"
)

func main() {
	a := app.New()
	w := a.NewWindow("Hello GTK")

	label := widget.NewLabel("Hello, GTK!")
	button := widget.NewButton("Click Me", func() {
		label.SetText("Button Clicked!")
	})

	container := layout.NewVBoxLayout()
	container.Add(label)
	container.Add(button)

	w.SetContent(container)
	w.Resize(fyne.NewSize(200, 100))
	w.ShowAndRun()
}

3. Qt

Qt 是一个功能强大的跨平台 C++ GUI 工具包,Go 语言可以通过 go-qt 库来使用 Qt。

安装 Qt 和 go-qt

sudo apt-get install qt5-default
go get -u github.com/therecipe/qt/cmd/...

示例代码

package main

import (
	"os"

	"github.com/therecipe/qt/core"
	"github.com/therecipe/qt/gui"
	"github.com/therecipe/qt/widgets"
)

func main() {
	widgets.NewQApplication(len(os.Args), os.Args)

	window := widgets.NewQMainWindow(nil, 0)
	window.SetWindowTitle("Hello Qt")

	label := widgets.NewQLabel2("Hello, Qt!", nil, 0)
	label.SetAlignment(core.Qt__AlignCenter)

	button := widgets.NewQPushButton2("Click Me", nil)
	button.ConnectClicked(func(bool) {
		label.SetText("Button Clicked!")
	})

	layout := widgets.NewQVBoxLayout()
	layout.AddWidget(label, 0, 0)
	layout.AddWidget(button, 0, 0)

	container := widgets.NewQWidget(nil, 0)
	container.SetLayout(layout)
	window.SetCentralWidget(container)

	window.Show()
	widgets.QApplication_Exec()
}

4. Wails

Wails 是一个用于构建桌面应用程序的框架,它允许你使用 Go 语言编写业务逻辑,并使用 HTML/CSS/JavaScript 编写用户界面。

安装 Wails

go get -u github.com/wailsapp/wails/v2/cmd/wails

示例代码

创建一个新的 Wails 项目:

wails init myapp
cd myapp

编辑 main.go 文件:

package main

import (
	"github.com/wailsapp/wails/v2/pkg/runtime"
	"github.com/wailsapp/wails/v2/pkg/ui"
)

func main() {
	ui.Main(func() {
		ui.NewWindow("Hello Wails", 800, 600, true).
			WithTitle("Hello Wails").
			WithLayout(ui.NewVBoxLayout()).
			AddChild(ui.NewLabel("Hello, Wails!")).
			Show()
	})
	runtime.Launch()
}

运行项目:

wails dev

这些是一些在 Linux 系统下使用 Go 语言进行图形界面开发的流行选择。你可以根据自己的需求和喜好选择合适的框架或库。

0
看了该问题的人还看了