在Linux系统下使用Go语言进行图形界面(GUI)开发,可以选择多种框架和库。以下是一些流行的选择:
Fyne 是一个用 Go 编写的原生跨平台 GUI 工具包。它提供了丰富的组件和布局管理器,支持 Windows、macOS 和 Linux。
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()
}
GTK 是一个用于创建图形用户界面的多平台工具包。Go 语言可以通过 gioui
库来使用 GTK。
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()
}
Qt 是一个功能强大的跨平台 C++ GUI 工具包,Go 语言可以通过 go-qt
库来使用 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()
}
Wails 是一个用于构建桌面应用程序的框架,它允许你使用 Go 语言编写业务逻辑,并使用 HTML/CSS/JavaScript 编写用户界面。
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 语言进行图形界面开发的流行选择。你可以根据自己的需求和喜好选择合适的框架或库。