几步,写出一个 Go GUI。

使用 GOUI v0.4.0 编写一个小型计数器。相同界面代码面向 Windows、macOS 和 Linux,无需 C/C++ 编译器。

01

创建模块

固定发布版本,让这份教程不会悄悄切换到更新的 API。

Terminal
mkdir hello-goui
cd hello-goui
go mod init example.com/hello-goui
go get github.com/golang-gui/goui@v0.4.0
02

用 AI 助手开发

安装官方 goui-app 技能,让编码助手掌握 GOUI 应用开发。把下面的指令发送给你的工具;是否加载 Skill 由工具自身决定。 安装说明

Prompt
请按照 https://github.com/golang-gui/goui/blob/main/skills/INSTALL.md 的说明,安装 GOUI 应用开发 Skill。
03

编写界面

将以下代码保存为 main.go。Modern 样式跟随系统设置,点击按钮会更新状态并重建 View。

main.go
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)
    }
}
04

构建与运行

Linux 或 macOS 使用以下命令。在桌面中运行程序,而不是没有显示连接的会话。

Linux / macOS
CGO_ENABLED=0 go build -trimpath -ldflags="-s -w" -o hello-goui .
./hello-goui

Windows PowerShell

使用 -H=windowsgui 构建无控制台窗口的应用;调试时可以去掉这个参数以查看终端输出。

PowerShell
$env:CGO_ENABLED='0'
go build -trimpath -ldflags="-s -w -H=windowsgui" -o hello-goui.exe .
.\hello-goui.exe
05

选择需要的层

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,并在目标桌面验证具体行为。