9 分钟阅读

最近给易分屏做技术复盘时,顺手把桌面 UI 框架这个领域从头到尾梳理了一遍。规则很简单:不只看官方文档怎么说,更要去论坛和社区往死里找真实用户的反馈——V2EX、Reddit、GitHub、日德技术社区、实测博客,能翻的都翻了。然后把 23 个框架各自最主流的标志性界面(Electron 配 VS Code、Qt 配 OBS、WPF 配 Visual Studio……)逐一复刻出来对照着看。

这篇文章就是全部成果:七大阵营、23 个框架,每个都给你档案、代表作、优缺点、实测数据和社区口碑。小众的 Rust / Go 新势力也一个没落下。

先看数据:体积与资源占用

选 UI 框架第一个硬指标就是安装包和内存。下面是 2026 年公开实测与典型值的汇总(Tauri / Electron / Slint / egui 为实测值[1][2][17],WPF 为易分屏发布包实测,其余为社区典型值[10][13]):

典型安装包体积对比 典型安装包体积对比(MB)——Dear ImGui 2MB 一路到 Electron 92MB+,差了 46 倍

Electron 和 Tauri 这对冤家的同场景实测,差距更直观:同一应用三窗口场景,安装包 4.8MB vs 92MB,内存 142MB vs 412MB,冷启动 0.6s vs 2.1s[1][2]:

Electron vs Tauri 实测

带着这个量级感,我们开始过阵营。

一、.NET 原生系(Windows 专属)

微软自家的元老与新贵。这一族只跑 Windows,但与系统贴合度最高;渲染方式上 WinForms 直接用系统控件,WPF / WinUI 3 则是”声明式描述 + 自绘渲染”的现代架构。

WinForms:拖拽出活的活化石

WinForms 案例图 复刻:典型的 .NET 数据表格管理程序——DataGridView + 工具栏 + 状态栏

  • 档案:1997 年随 .NET 前身出生,微软最老的托管 UI 框架。每个控件都是真实的 Win32 句柄,直接调用操作系统原生控件,不经过任何自绘层。配套可视化设计器拖拽出活最快。
  • 常见于:企业内部 MIS、医疗/工控上位机、老牌商用软件。
  • 优点:出活极快、资料最多、AI 时代检索友好;.NET 8/10 持续官方支持,并非”死了”。
  • 短板:观感停留在十年前,精致 UI 需大量第三方控件。
  • 关键数据:典型体积约 1 MB(框架依赖)/ 65 MB(自包含),仅 Windows。
  • 社区口碑:共识是”老但不死”——.NET 10 LTS 支持到 2028,”遗留”标签只是营销话术[9];做简单内部工具”依然务实”[8]。
// WinForms:控件即对象,事件即逻辑
var grid = new DataGridView { Dock = DockStyle.Fill };
grid.Columns.Add("name", "客户名称");
grid.Rows.Add("宏图科技", "王建国");
btnDelete.Click += (s, e) => grid.Rows.RemoveAt(grid.CurrentRow.Index);

WPF:Visual Studio 的骨架

WPF 案例图 复刻:Visual Studio——WPF 写的 IDE,也是 WPF 能力天花板的活广告

  • 档案:2006 年发布,微软第一代”声明式 UI”框架:XAML 描述界面 + DirectX 硬件自绘(不使用系统控件),数据绑定、样式模板、MVVM 皆出于此。Visual Studio 全程用它打造。
  • 代表作:Visual Studio、Azure Data Studio、大量企业级商业软件。
  • 优点:样式自由度极高,任何控件都能彻底重模板;20 年生态沉淀,第三方控件库最丰富。
  • 短板:永远跨不了平台;默认观感朴素需自行美化。
  • 关键数据:易分屏发布包实测 68 MB(自包含),仅 Windows。
  • 社区口碑:2026 共识——Windows-only 存量应用留在 WPF 就是正确答案[4][7];纯 Windows 专项性能它通常最强[5],第三方生态无出其右[14]。
<!-- WPF:XAML + 模板重定义任意控件 -->
<Window>
  <Button Content="确定" Command="{Binding OKCmd}">
    <Button.Template> <!-- 整个按钮可以彻底换皮 -->
      <ControlTemplate TargetType="Button">…</ControlTemplate>
</Window>

WinUI 3:Windows 11 的官方脸

WinUI 3 案例图 复刻:Windows 11 设置面板——Mica 材质 + 左导航 + 卡片式设置项

  • 档案:Windows 11 时代官方 UI 框架,Fluent 2 设计语言。Mica 云母材质直接取自桌面壁纸,圆角、阴影、动效全部系统级。架构与 WPF 同为 XAML 自绘,但窗口 API、控件集完全是新的一套。
  • 代表作:Win11 设置、微软商店、Files App、Win11 记事本。
  • 优点:与 Win11 系统 UI 观感 1:1,开箱即用;Fluent 控件、输入验证、深浅主题免费。
  • 短板:与 WPF 迁移是重写而非升级。
  • 关键数据:典型体积约 55 MB(自包含),Win10 1809+。
  • 社区口碑:微软把启动性能与响应列为 2026 优先项[1];但官方自己承认 WPF 的很多能力在 WinUI 3 没有第一方对应物,迁移需逐项验证[7]。
<!-- WinUI 3:Fluent 控件开箱即用 -->
<ToggleSwitch Header="深色模式" IsOn="{x:Bind VM.Dark, Mode=TwoWay}"/>
<NavigationView PaneDisplayMode="Left">
  <NavigationView.MenuItems>
    <NavigationViewItem Content="个性化" Icon="Color"/>

.NET MAUI:一套代码四端跑

.NET MAUI 案例图

  • 档案:2022 年接替 Xamarin 成为微软官方跨平台框架。Handler 架构:把抽象控件映射到各平台原生控件(iOS 用 UIKit、Windows 用 WinUI),一套 XAML 出四端。复刻案例是天气类 App——MAUI 的主场就是”一套代码,手机到桌面”。
  • 常见于:企业移动+桌面套壳、Xamarin 存量升级。
  • 优点:微软官方支持、工具链完善、.NET 生态直通。
  • 短板:桌面端多窗口/菜单栏等 UX 偏弱(移动遗产);性能被评”略低”[14]。
  • 关键数据:典型体积约 60 MB,Win / macOS / iOS / Android。
  • 社区口碑:适合 .NET 团队的全端需求;但 2026 横评指出其桌面 UX 仍有”移动遗产拖累”的 awkward[10],纯桌面场景有更好的选择。
<!-- MAUI:一套页面四端运行 -->
<VerticalStackLayout Padding="20">
  <Label Text="北京" FontSize="24" HorizontalOptions="Center"/>
  <Border StrokeShape="RoundRectangle 12">
    <HorizontalStackLayout>…</HorizontalStackLayout>

二、.NET 跨平台系

想让 WPF 的技术投资延伸到 macOS / Linux,主要看它们:Avalonia 是自绘路线,Uno 是”WinUI 全平台化”路线。

Avalonia:WPF 的跨平台精神续作

Avalonia 案例图

  • 档案:2016 年开源起步,Grid、绑定、MVVM、模板概念全部照搬 WPF;自绘渲染(Skia)+ CSS 风格样式选择器是最大差异。12 版用延迟合成重写渲染器,官方基准峰值帧率提升巨大[1]。复刻案例是官方 MusicStore 示例——官方文档与模板的门面担当。
  • 代表作:Rider 备选技术栈、GitHub 老牌开源应用、多个商业跨端 .NET 产品。
  • 优点:WPF 开发者 1-2 天上手[4];样式系统比 WPF 现代(CSS 选择器)。
  • 短板:生态小于 WPF;快捷键等系统级集成偶有坑[6]。
  • 关键数据:典型体积约 75 MB(自包含),Win / macOS / Linux / iOS / Android(11+)。
  • 社区口碑:V2EX 实迁用户:从 Electron 迁来全程 AI 辅助可行,但全局快捷键偶尔失效、宿主脚本对 JS 生态支持弱[6]。何时选它有明确共识:跨平台是确定需求而非”以后也许”[22]。
<!-- Avalonia:CSS 风格选择器是最大特色 -->
<ItemsControl ItemsSource="{Binding Albums}"/>
<Style Selector="Border.album:pointerover">
  <Setter Property="Opacity" Value="0.85"/>
</Style>

Uno Platform:WinUI XAML 上一切平台

Uno Platform 案例图

  • 档案:2018 年开源,思路独树一帜:把 WinUI 的 XAML API 整个搬到所有平台,甚至能编译到 WebAssembly 跑在浏览器里。对熟悉 WinUI/UWP 的团队是”零新语法”的跨平台方案。复刻案例是 Uno Gallery——把 WinUI 控件搬到每个平台的样子。
  • 常见于:企业 WinUI 存量跨端化、Web+桌面同构应用。
  • 优点:WinUI XAML 一套代码全平台 + WebAssembly。
  • 短板:社区规模与第三方生态小于 Avalonia/MAUI。
  • 关键数据:典型体积约 70 MB,全平台 + WebAssembly。
  • 社区口碑:2026 横评将其列为 .NET 跨平台第三极:”WinUI XAML on every OS — including WebAssembly”[10],Linux 支持优于 MAUI[14]。
<!-- Uno:直接写 WinUI XAML -->
<Page xmlns:win="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
  <win:ToggleButton Content="C# 跨六端"/>

三、C++ 传统系

三十年功力的老一辈:性能天花板最高、生态最硬核。你每天用的 VLC、OBS、GIMP、Audacity 都是它们画出来的。

Qt Widgets:OBS 和 VLC 的地基

Qt 案例图 复刻:OBS Studio——全球主播每天都在看的 Qt 停靠面板

  • 档案:Qt 公司 1995 年起维护,C++ 跨平台的事实标准。自绘 + 原生混合:默认在各平台用原生样式引擎,也可用 QSS(类 CSS)整体换肤;信号槽机制解决跨线程通信。
  • 代表作:OBS Studio、VLC、WPS Office、Telegram Desktop、Maya。
  • 优点:工业级稳定、嵌入式/桌面通吃;自带完整周边(网络/多媒体/SQL/国际化)。
  • 短板:许可证体系复杂(GPL/LGPL/商业三选)[12]。
  • 关键数据:典型体积约 35 MB(C++ Release),全平台 + 嵌入式。
  • 社区口碑:”Qt 自 1995 年起就在做跨平台,做得非常好”——但它是一个独立于 .NET 的完整生态(C++ + QML + 许可证体系)[4]。
// Qt Widgets:信号槽 + 停靠窗口(OBS 的骨架)
auto *dock = new QDockWidget(tr("混音器"), this);
addDockWidget(Qt::BottomDockWidgetArea, dock);
connect(btnRecord, &QPushButton::clicked,
        this, &MainWindow::startRecording);

Qt / QML:车机仪表的事实标准

Qt QML 案例图

  • 档案:Qt Quick 是 Qt 的”现代面”:QML 声明式语法(JSON 风格)+ JavaScript 表达式 + 内建属性动画系统,场景图直接走 GPU。是汽车仪表、车机中控、嵌入式 HMI 的事实标准。复刻案例是车机仪表/HMI——声明式 + 动画是它的灵魂。
  • 代表作:大量车机量产项目、Tesla 风格 HMI 开源项目、Qt Creator 欢迎页。
  • 优点:动画/图形能力天花板级,天生为流畅动效设计;声明式语法直观,设计师可读。
  • 短板:与 C++ 侧交互(注册/线程)学习曲线陡。
  • 关键数据:典型体积约 40 MB,全平台 + 嵌入式。
  • 社区口碑:在 Rust Brasil 的 2026 横评里,QML 的渲染架构(原生/软件渲染)被视为成熟度标杆之一[15];同样受 Qt 许可证体系约束[12]。
// QML:仪表盘 = 声明式 + 内建动画
Gauge {
    value: speed.kmh
    Behavior on value { NumberAnimation { duration: 180 } }
}
Rectangle { radius: 16; color: "#1a2027" }

GTK 4:GNOME 半壁江山的地基

GTK 案例图 复刻:GNOME Files(Nautilus)——Adwaita 设计语言的门面

  • 档案:1998 年为 GIMP 而生(名字就是 GIMP Toolkit)。C 语言 + GObject 对象系统,样式可用纯 CSS 定制;4 代起默认 CSD 客户端装饰(标题栏由应用自绘)。Linux 桌面半壁江山的地基。
  • 代表作:GIMP、Inkscape、GNOME Files/设置、Firefox(Linux 旧版)。
  • 优点:Linux 第一公民,Wayland/扁平化体验最佳;CSS 全量定制样式,能力极强。
  • 短板:Windows/macOS 是二等公民观感。
  • 关键数据:典型体积约 30 MB,主场 Linux。
  • 社区口碑:2026 横评把它与 WinUI、Cocoa 并列为”平台原生派”的代表;跨平台商业项目用它需要接受各平台观感差异[10]。Rust 侧的 gtk-rs 绑定在 Rust GUI 横评中同样占一席[15]。
// GTK4 (C):动作 + CSS 类
button = gtk_button_new_with_label ("新建文件夹");
gtk_widget_add_css_class (button, "pill");
g_signal_connect (button, "clicked",
                  G_CALLBACK (on_new_folder), self);

wxWidgets:原生控件路线的老前辈

wxWidgets 案例图

  • 档案:1992 年诞生,比 Qt 更老。哲学是”用系统原生控件”:Windows 上直接调 Win32、macOS 上调 Cocoa,所以包体小、观感与系统 100% 一致——代价是自定义主题困难。复刻案例是 Audacity 音轨界面。
  • 代表作:Audacity、FileZilla、KeePassX。
  • 优点:原生观感 + 小体积 + 无许可证焦虑。
  • 短板:界面表现力受限于原生控件,换肤几乎不可能。
  • 关键数据:典型体积约 8 MB,全平台。
  • 社区口碑:2026 横评定位它是”C++ 包装 OS 原生控件”的轻量选择[10]——Audacity 与 FileZilla 两个亿级下载量的应用撑起它三十年的信誉。
// wxWidgets:事件表绑定
auto* btn = new wxButton(panel, wxID_ANY, "导出");
btn->Bind(wxEVT_BUTTON, &MainFrame::OnExport, this);
wxBoxSizer* sizer = new wxBoxSizer(wxVERTICAL);
sizer->Add(track, 1, wxEXPAND);

Dear ImGui:游戏引擎调试面板之王

ImGui 案例图 复刻:游戏引擎调试面板——ImGui 的”每帧重画”即时模式天然适合这类工具

  • 档案:Omar Cornut 2014 年开源,即时模式 GUI 的代名词:没有 retained 控件树,每帧直接重画全部 UI,用函数调用即时查询控件状态。挂到任意 GPU 后端就能跑。
  • 代表作:Unreal/Unity 内部工具风、Rerun 前身、无数游戏调试器、Mojo/路径追踪编辑器。
  • 优点:集成只需渲染后端,约 2MB 体积;无 UI 状态同步问题,迭代速度极快。
  • 短板:默认观感就是”调试工具”,面向用户需大量自绘。
  • 关键数据:体积约 2 MB,主场游戏引擎/内嵌工具。
  • 社区口碑:Rust 横评里 egui 被称为”Rust 版 ImGui”(同为即时模式、走 GPU)[15][19];cmt 培训机构提醒:即时模式两兄弟都依赖 GPU 后端,在图形设备受限的机器上会困难[18]。
// ImGui:没有回调,每帧直接判断点击
ImGui::Begin("Inspector");
ImGui::SliderFloat("speed", &player.speed, 0.f, 10.f);
ImGui::PlotHistogram("##fps", frameTimes, IM_ARRAYSIZE(frameTimes));
ImGui::End();

四、Web 技术套壳系

用 HTML/CSS/JS 写界面:生态最大、上手最快、表现力无限,代价是资源占用——直到 Tauri 把体积卷下来。

Electron:VS Code 与整个时代的默认答案

Electron 案例图 复刻:VS Code 深色——世界上最成功的 Electron 应用,读这篇文章的你可能正开着它

  • 档案:2013 年 GitHub 为 Atom 而生。原理:把整个 Chromium 浏览器 + Node.js 打进你的应用,界面就是网页,原生能力靠主进程 IPC。渲染一致性全平台 100% 相同。
  • 代表作:VS Code、Slack、Discord、Notion、Figma 桌面版。
  • 优点:npm 生态无缝衔接,前端技能全复用[6];各平台渲染完全一致,调试体验佳。
  • 短板:包体 80–224MB、内存实测 400MB+ 级别[1][2]。
  • 关键数据:安装包实测 92–224 MB[1][2],内存实测约 412 MB[1]。
  • 社区口碑:”要成熟生态、各处渲染一致、纯 JS 栈,Electron 依然赢;轻量新应用选 Tauri”[3]。V2EX 用户称 npm 无缝衔接是它最大护城河[6]。
// Electron:主进程开窗 + 渲染进程网页
const win = new BrowserWindow({
  width: 1280, frame: false, webPreferences: { preload } });
win.loadFile('index.html');
// index.html 就是普通 React/Vue 应用

Tauri:2026 年新应用的首选

Tauri 案例图 复刻:Bitwarden 桌面版——百万级用户的 Tauri 门面应用

  • 档案:2020 年开源,思路是不打包浏览器,直接用系统自带 WebView(Win 用 WebView2、mac 用 WKWebView),后端用 Rust 编译到 2–4MB,前端照旧是任意 Web 框架。
  • 代表作:Bitwarden 桌面版、AppFlowy、大量 2024+ 独立开发者工具。
  • 优点:4.8MB 安装包(对 Electron 19 倍差距)[1];内存省 2.9 倍、冷启动快 3.5 倍(实测)[1][2]。
  • 短板:后端必须碰 Rust;各系统 WebView 渲染有细微差异[18]。
  • 关键数据:安装包实测 4.8 MB,内存实测 142 MB,冷启动 0.6s。
  • 社区口碑:实测横评结论句:”tauri is the best choice for new desktop apps in 2026”[3];槽点集中在 Rust 门槛与冷编译耗时[1],以及“Windows 上观感与 mac 不一致”是最常被低估的点[18]。
// Tauri:Rust 命令 + 前端 invoke
#[tauri::command]
fn list_ciphers() -> Vec<Cipher> { vault::all() }
fn main() { tauri::Builder::default()
    .invoke_handler(tauri::generate_handler![list_ciphers])
    .run(tauri::generate_context!()).unwrap(); }

Wails:Go 阵营的 Tauri

Wails 案例图

  • 档案:2019 年开源,与 Tauri 同走系统 WebView 路线,后端是 Go。杀手锏是方法直绑:写一个 Go 函数,前端 JS 里就能直接调用,无需手写 IPC。复刻案例是典型形态——本地小工具 + Web 界面的数据库客户端。
  • 常见于:Go 开发者的桌面工具、运维/数据库小工具。
  • 优点:Go 后端比 Rust 平缓、前后端零胶水。
  • 短板:社区小于 Tauri;Windows 平台支持相对薄弱[10]。
  • 关键数据:典型体积约 10 MB,Win / macOS / Linux。
  • 社区口碑:在 2026 框架横评中与 Tauri 同台出场,被归类为”Web 套壳轻量派”[10];适合已在 Go 生态里的团队。
// Wails:Go 方法直绑前端
func (a *App) Query(sql string) []Row {
    return a.db.Select(sql)
}
// 前端:const rows = await window.go.main.App.Query(sql)

五、现代跨端系(移动延伸到桌面)

从手机端生长出来的两套自绘引擎——一套代码出全端,桌面细节仍在补课。

Flutter Desktop:Ubuntu 官方安装器的新骨架

Flutter Desktop 案例图

  • 档案:Google 2017 年发布,自绘引擎(Impeller)画每一个像素——不依赖系统控件,所以三端观感 100% 一致。Dart 语言 + Widget 组合式 API。桌面多窗口正与 Canonical 合作扩展[11]。复刻案例是 Ubuntu 官方安装器——Canonical 放弃老方案后用 Flutter 重写的门面。
  • 代表作:Ubuntu 安装器、Google Classroom 桌面、大量移动+桌面双端产品。
  • 优点:品牌视觉完全统一、动画能力顶级;Windows 满意度 74% 且持续上升[11]。
  • 短板:桌面快捷键/菜单/多窗口是移动遗产短板[10]。
  • 关键数据:典型体积 30–80 MB[10],移动 + 桌面 + Web。
  • 社区口碑:横评:”桌面 UX 在 2025–2026 快速补齐,严肃桌面应用采用率在上升”[10];官方调研显示桌面满意度与移动端差距正在收窄[11]。
// Flutter:一切皆 Widget,自绘无平台差异
FilledButton.icon(
  icon: const Icon(Icons.arrow_forward),
  label: const Text('下一步'),
  onPressed: () => installer.next(),
)

Compose Multiplatform:JetBrains 的声明式答卷

Compose Multiplatform 案例图

  • 档案:JetBrains 把 Android 的 Jetpack Compose 带到桌面/iOS/Web:@Composable 函数即 UI,Kotlin 声明式 + Skia 自绘。1.12 起带来 Compose Hot Reload 实验特性,桌面开发体验明显改善[1]。复刻案例是 JetBrains Fleet 风格——JetBrains 用 Compose 打造的新一代 IDE 外观。
  • 代表作:JetBrains Fleet、ToolBox App 新版、Android 团队桌面延伸。
  • 优点:Android 技能直接迁移,声明式写法现代。
  • 短板:JVM 打包体积偏重(约 80MB)。
  • 关键数据:典型体积约 80 MB,桌面 + Android + iOS + Web。
  • 社区口碑:2026 横评与 Flutter、MAUI 同台的现代选项[10];热重载实验特性是社区关注焦点[1]。
// Compose:函数即 UI,状态驱动重绘
@Composable
fun FileTree(files: List<File>) {
    LazyColumn {
        items(files) { f -> Text(f.name) }
    }
}

六、Python 系

脚本语言做 GUI:出活最快,打包和启动速度是永恒的坎。

PySide6:Anki 和 Calibre 的选择

PySide6 案例图

  • 档案:Qt 公司官方维护的 Python 绑定,LGPL 许可可免费商用闭源软件,与 PyQt6 API 99% 相同但许可证宽松得多[12]。附带 Qt Designer 可视化设计器。复刻案例是 Anki 复习界面——全球记忆类软件的头牌。
  • 代表作:Anki、Calibre、大量科研/金融内部工具。
  • 优点:Qt 全部能力 + Python 语法,AI 辅助开发极顺。
  • 短板:PyInstaller 打包体积大、启动慢。
  • 关键数据:打包后约 50 MB,LGPL 许可[12]。
  • 社区口碑:被反复推荐为”被 PyQt6 许可证吓退者的正确选择”[12];2026 年 Python GUI 横评中是现代首选[12]。
# PySide6:信号槽的 Python 化
btn = QPushButton("显示答案")
btn.clicked.connect(card.flip)
layout.addWidget(btn)
app.exec()

Tkinter:每个学 Python 的人的第一个 GUI

Tkinter 案例图

  • 档案:1991 年随 Python 一起出生,包装 Tcl/Tk 工具包。Python 装完就有,零依赖;观感是上世纪的,但正因为如此,它是所有 Python 教材的第一章。复刻案例是 Python IDLE。
  • 代表作:Python IDLE、教材示例、五分钟小脚本。
  • 优点:零依赖、十分钟上手。
  • 短板:观感古老、现代控件几乎缺失[12]。
  • 关键数据:打包后约 12 MB,无依赖(标准库)。
  • 社区口碑:2026 年的 Python GUI 横评里,Tkinter 的角色已是”对照组”——现代选择纷纷指向 PySide6[12]。价值只剩零依赖和极低学习成本。
# Tkinter:标准库,无需安装
btn = tk.Button(root, text="开始",
                command=lambda: start())
btn.pack(pady=10)

七、Rust / Go 新势力

2020 年代冒出来的新生代:内存安全、体积小、性能强,但生态还在建设期。2026 年 Rust GUI 阵营的横评已经把它们分成清晰的三条路线[15]。

Slint:把 Rust 应用的体积砍 87%

Slint 案例图 复刻:智能家居恒温器触屏——Slint 为 MCU 级硬件而生

  • 档案:2020 年从 Qt 老兵团队独立出来,自家 .slint 声明式语言 + 可选软件渲染——不强制 GPU,能跑在没有操作系统的单片机上。内存实测是 15 框架横评里最省的(105.9 MB 峰值)[16]。
  • 代表作:家电触屏 HMI、车载面板、Bosch 等工业项目。
  • 优点:实测把 Rust 应用从 135MB 压到 30MB(弃 GPU 用软件渲染)[17];单语言可编译到 MCU/Linux/桌面/Web。
  • 短板:商用需付费许可(也有 GPL/royalty-free 桌面条款)。
  • 关键数据:实测内存峰值 105.9 MB(15 框架最小)[16],体积约 30 MB[17]。
  • 社区口碑:架构师实测:”用 Slint 替换 egui 后体积从 135MB 降到 30MB,比最重的方案省 87%”[17];Rust 横评将它列为”原生/软件渲染”路线代表[15]。
// Slint:自家声明式语言,属性绑定
export component Thermostat {
    in property <length> target-temp;
    arc { start: 0; sweep: target-temp * 10deg; }
    Text { text: target-temp + "°"; }
}

Iced:整个 Linux 发行版都用它画

Iced 案例图

  • 档案:2019 年开源,Elm 架构的 Rust 实现:Model + Message + update 的单向数据流,走 wgpu GPU 渲染[15]。System76 为打造 COSMIC 桌面环境把它推向生产级。复刻案例是 COSMIC 桌面设置——整个 Linux 发行版的 UI 都用 Iced 写。
  • 代表作:Pop!_OS COSMIC、System76 工具链。
  • 优点:有整个发行版级的实战背书(COSMIC);架构清晰,大型应用可控。
  • 短板:依赖 GPU 后端,图形受限设备困难[18]。
  • 关键数据:典型体积约 40 MB,wgpu (GPU) 渲染[15]。
  • 社区口碑:cmt 培训机构评价 egui/iced:”取决于目标场景;两者都要求图形后端”[18];Rust 横评把它与 Tauri、egui、Slint 并列四大主流[15]。
// Iced:Elm 架构 = 状态 + 消息 + 更新
fn update(state: &mut State, msg: Msg) {
    match msg {
        Msg::NightMode(on) => state.night = on, /* … */ }
}
// view: toggle("夜间模式", state.night, Msg::NightMode)

egui:Rust 版 ImGui

egui 案例图

  • 档案:纯 Rust 即时模式 GUI:”simple, fast, highly portable”[19],同一套代码跑原生、Web(WASM) 和游戏引擎。开发体验与 Dear ImGui 同源:每帧重画,无回调。复刻案例是 Rerun——机器人/多模态数据可视化领域的明星工具。
  • 代表作:Rerun、Rust 内部工具、机器人/仿真调试面板。
  • 优点:上手最快、纯 Rust、跨 Web/原生/引擎[19]。
  • 短板:内存比 Slint 高(约 120MB vs 105.9MB)[16];依赖 GPU 后端[18]。
  • 关键数据:实测内存约 120 MB[16],第一版应用实测 135 MB[17]。
  • 社区口碑:一位架构师的实测故事流传很广:用 egui 写的 GUI 135MB,换 Slint 压到 30MB——结论不是”egui 差”,而是 GPU 渲染 vs 软件渲染的取舍[17]。
// egui:即时模式,与 ImGui 同源
egui::Window::new("Blueprint").show(ctx, |ui| {
    ui.label("/world/robot");
    if ui.button("play").clicked() { player.seek(t); }
});

Fyne:Go 桌面开发的事实标准

Fyne 案例图

  • 档案:2019 年开源,Go 阵营里最成体系的自绘框架:OpenGL 自绘 + Material 风格默认主题,API 极简(一个 widget 一行代码)。编译产物是单个静态二进制,部署体验极佳。复刻案例是官方 Demo App——Go 开发者接触自绘 GUI 的第一站。
  • 常见于:Go 开发者桌面工具、嵌入式控制面板。
  • 优点:单文件静态二进制部署、跨平台交叉编译;API 简单,AI 辅助开发友好。
  • 短板:生态与成熟度不及 Qt/Electron 级别[10]。
  • 关键数据:典型体积约 20 MB,Go。
  • 社区口碑:2026 横评把 Fyne/gioui 归为”Go 阵营原生 UI”代表[10];在 Go 生态里几乎没有第二选择。
// Fyne:widget 组合即界面
dark := widget.NewCheck("深色主题", nil)
btn := widget.NewButton("Continue", launch)
w.SetContent(container.NewVBox(dark, btn))

Gio:Go 的即时模式极简派

Gio 案例图

  • 档案:Go 阵营的即时模式自绘框架(与 Fyne 的 retained 模式相对):事件驱动的立即式 UI,全程在 GPU 上绘制。API 底层,控件少而精,适合愿意自己组装的团队。复刻案例是官方计数器示例——极简哲学的具象化。
  • 常见于:极简 Go 工具、嵌入式 Go UI。
  • 优点:极小体积、纯 Go、即时模式可控性强。
  • 短板:API 底层,常用控件要自己搭。
  • 关键数据:典型体积约 15 MB,Go。
  • 社区口碑:与 Fyne 并列为”Go 阵营原生 UI 两大选项”[10];定位与 egui 之于 Rust 类似——小众但死忠。
// Gio:立即式事件循环
for e := range window.Events() {
    switch e := e.(type) {
    case pointer.Event: clicks++
    }
    layout(gtx, clicks)
}

选型速查表

23 个框架按场景对号入座,全部结论有上文的实测与社区来源背书:

你的场景 首选 备选 理由(社区共识与实测)
Windows 专用、求稳 WPF WinForms(内部工具) 存量应用留任是 2026 共识[4][7];WinForms 做简单内部工具依然务实[8]
Windows 专用、要 Win11 观感 WinUI 3 Uno Platform Fluent/Mica 开箱即用;WPF 特性无一一对应[7]
未来要跨平台、继续 C# Avalonia MAUI / Uno WPF 开发者 1-2 天上手[4][21];MAUI 桌面 UX 偏弱[10]
轻量分发的 Web 界面工具 Tauri Wails(Go) 4.8MB vs 92MB、内存省 2.9 倍(实测)[1][2][20]
重度依赖 npm 生态的复杂应用 Electron Tauri npm 无缝衔接是护城河[6];”复杂应用仍选 Electron”[3]
Python 快速出活 PySide6 Tkinter(零依赖) LGPL 免费商用、API 与 PyQt6 一致[12]
移动 App 延伸出桌面版 Flutter Compose Multiplatform 桌面 UX 快速补齐、满意度 74%[10][11]
C++ 工业级 / 嵌入式 Qt wxWidgets(原生观感) 1995 年起的成熟度;注意许可证[4][12]
车机 / 仪表 / 动效密集 HMI QML Slint(MCU 级) 声明式 + 内建动画是 QML 灵魂[15]
游戏内嵌调试面板 Dear ImGui egui(Rust) 约 2MB、即时模式无状态同步[10][19]
内存敏感的 Rust 应用 Slint Iced / egui 实测内存最小(105.9MB 峰值)、软件渲染省 87%[16][17]
整个桌面环境级 Rust 工程 Iced Slint System76 COSMIC 发行版级实战背书[15]
Go 生态桌面工具 Fyne Gio(即时模式)/ Wails Go 阵营原生 UI 两大选项[10]
Linux 为第一平台 GTK 4 Qt GNOME 御用、Wayland 体验最佳[10]

一句话总结:2026 年桌面 UI 领域的格局是——老派(WPF/Qt/GTK)守生产,Web 套壳(Tauri/Electron)守效率,新势力(Slint/Iced/egui)守体积。选型的第一步不是看哪个最新,而是先回答三个问题:只在 Windows 吗?团队会什么语言?包体和内存有多重要?这三个答案几乎能唯一确定你的框架。


Sources · 社区与实测来源

  1. ToolVS, “Tauri vs Electron (2026)” — 2026 年 4 月实测:安装包 4.8MB vs 92MB、三窗口 RAM 142MB vs 412MB、冷编译更慢。toolvs.co/compare/tauri-vs-electron
  2. CSDN, “从224MB到4.7MB:Electron与Tauri跨平台桌面开发选型对比” — 冷启动 2.1s vs 0.6s 实测。blog.csdn.net/weixin_26945061/article/details/166267829
  3. DevToolPicks, “Tauri vs Electron for Indie Hackers in 2026” — Tauri 为新应用首选、Electron 赢在生态与渲染一致性。devtoolpicks.com/blog/tauri-vs-electron-indie-hackers-2026
  4. Avalonia UI, “Avalonia vs WPF” / “WPF Modernization in 2026” — 存量 WPF 留任、跨平台时 Avalonia 为合理目标。avaloniaui.net/wpf-compare
  5. SciChart, “WPF vs Avalonia: Which Is Best in 2026?” — 成熟度与 Windows 专项性能对比。scichart.com/blog/wpf-vs-avalonia/
  6. V2EX, “为什么很少能看到有人使用 AvaloniaUI 进行开发” — 实迁反馈:快捷键偶发失效、JS 生态弱于 Electron、npm 衔接是 Electron 护城河。s.v2ex.com/t/1234197
  7. Microsoft Learn, “Choose your migration path” / “Migrate WPF app patterns to WinUI 3” — WPF/WinForms 持续受支持、WinUI 3 存在能力缺口。learn.microsoft.com/…/migration-decision-guide
  8. Aior Community, “Windows app development 2026” — WinForms 在 .NET 8 上做内部工具依然务实。aior.com/community/threads/…211/
  9. Gigasoft, “Is WinForms Dead? No.” — .NET 10 LTS 支持到 2028。gigasoft.com/blog/best-winforms-chart-performance-guide
  10. LabHub Blog, “Desktop App Frameworks 2026 — A Category-Wide Comparison” — Tauri/Electron/Wails/Compose/MAUI/Flutter/Qt/Slint 横评。labhub.hopto.org/blog/culture/2026-05-14-…deep-dive-2026
  11. Flutter Blog, “Flutter Q2 2026 survey” — Windows 满意度 74%、多窗口桌面支持扩展中。flutter.dev/blog/flutter-q2-2026-survey
  12. Kadders, “Python GUI Frameworks: Which One Should You Choose?” — PySide6 LGPL 与 PyQt6 GPL 差异;Tkinter 现代替代方案。kadders.com/blog/python-gui-frameworks/
  13. LearnData 开源笔记, “桌面应用 UI 框架怎么选” — Electron 安装包 80–150MB 等阵营速览。newzone.top/code/desktop-ui.html
  14. CSDN, “Avalonia、MAUI、Uno Platform、Flutter、Electron、Qt 和 Tauri 的详细对比” — 各框架优缺点汇总表。blog.csdn.net/u013136510/article/details/146469639
  15. Rust Brasil, “Rust GUI 2026: Tauri, Iced, egui ou Slint?” — 各 Rust GUI 渲染后端对比表(wgpu/WebView/原生/软件渲染)。rustlang.com.br/blog/rust-gui-2026/
  16. たぬきのはらのうち, “デスクトップUIフレームワーク メモリ消費量比較【2026年版】” — 15 框架内存实测:Slint 105.9MB 最小、egui 约 120MB。pontanuki.com/posts/desktop-ui-framework-memory-benchmark-2026
  17. Trystan Sarrade, “How I took my Rust GUI from 135 MB to 30 MB by ditching the GPU” — egui→Slint 重写实测。trystan-sarrade.com/article/rust-gui-135mb-to-30mb-egui-to-slint
  18. cmt Training GmbH, “Tauri, Slint, egui oder iced: Rust-Oberflächen” — egui/iced 需图形后端;Tauri 各平台观感不一致是最被低估的弱点。cmt.de/rust/desktop-anwendungen-mit-rust/
  19. crates.io, “egui” — 官方描述:纯 Rust 即时模式 GUI,可跑在 Web、原生与游戏引擎。crates.io/crates/egui
  20. DEV Community, “Tauri vs Electron vs Neutralinojs: Bundle Size and RAM, Measured” — 同一应用三框架实测对比。dev.to/…/tauri-vs-electron-vs-neutralinojs-…-2a21
  21. 高端阳, “AvaloniaUI 与 WPF 对比” — 何时选 Avalonia 的判断清单(跨平台是确定需求而非”以后也许”)。keyboardgdy.github.io/blog/2026/08/25/avalonia-ui-vs-wpf/
  22. AidenWy, “6 Alternative for Tkinter” — PySide6 与 PyQt6 API 99% 一致且 LGPL 免费商用。aidenwy.b-cdn.net/post/6-alternative-for-tkinter-python.html