几步,写出一个 Go GUI。
使用 GOUI v0.4.0 编写一个小型计数器。相同界面代码面向 Windows、macOS 和 Linux,无需 C/C++ 编译器。
创建模块
固定发布版本,让这份教程不会悄悄切换到更新的 API。
mkdir hello-goui
cd hello-goui
go mod init example.com/hello-goui
go get github.com/golang-gui/goui@v0.4.0用 AI 助手开发
安装官方 goui-app 技能,让编码助手掌握 GOUI 应用开发。把下面的指令发送给你的工具;是否加载 Skill 由工具自身决定。 安装说明
请按照 https://github.com/golang-gui/goui/blob/main/skills/INSTALL.md 的说明,安装 GOUI 应用开发 Skill。编写界面
将以下代码保存为 main.go。Modern 样式跟随系统设置,点击按钮会更新状态并重建 View。
package main
import (
"fmt"
"log"
"github.com/golang-gui/goui/theme/modern"
"github.com/golang-gui/goui/ui"
)
func main() {
count := ui.MakeState(0)
err := ui.Run("com.example.Hello", func(app ui.App) ui.RootView {
return ui.Root().
StyleSheet(modern.FromSettings(app.Settings())).
Windows(
ui.Window("main").
Title("Hello GOUI").
Size(480, 240).
Content(
ui.VBox(
ui.Label(fmt.Sprintf("Clicked %d times", count.Get())),
ui.Button("Click me").OnClick(func() {
count.Update(func(old int) int { return old + 1 })
}),
).Spacing(12).Padding(20),
),
)
})
if err != nil {
log.Fatal(err)
}
}
构建与运行
Linux 或 macOS 使用以下命令。在桌面中运行程序,而不是没有显示连接的会话。
CGO_ENABLED=0 go build -trimpath -ldflags="-s -w" -o hello-goui .
./hello-gouiWindows PowerShell
使用 -H=windowsgui 构建无控制台窗口的应用;调试时可以去掉这个参数以查看终端输出。
$env:CGO_ENABLED='0'
go build -trimpath -ldflags="-s -w -H=windowsgui" -o hello-goui.exe .
.\hello-goui.exe选择需要的层
ui 是声明式适配层,gui 提供命令式控件,widgets 提供更多用途控件。业务行为由应用管理,不放入 View 声明本身。
构建,不总是等于打包。
普通 go build 即可生成可执行文件。可选的 cmd/goui 工具通过 goui.toml 准备 Windows 图标和版本资源、macOS .app 元数据与图标,以及 Linux desktop 与图标资源。打包不会消除系统运行库要求。
查看构建与打包指南运行条件
Windows
Windows x64 · Win32 窗口 · DirectWrite 排版 · Direct2D、OpenGL 或 Software 绘制。
macOS
macOS Apple Silicon · AppKit 窗口 · Core Text 排版 · OpenGL 或 Software 绘制。签名与公证仍属于应用分发步骤。
Linux
Linux x64 · X11 · Pango/Cairo 排版 · OpenGL 或 Software 绘制。需要 X11、GL、GLib、Fontconfig、Pango/Cairo 和 GTK 运行库;Wayland 会话需 XWayland,并在目标桌面验证具体行为。