egui 快速上手:从 0 到跑通第一个 Rust GUI 的完整指南
egui 快速上手从 0 到跑通第一个 Rust GUI 的完整指南【免费下载链接】eguiegui: an easy-to-use immediate mode GUI in Rust that runs on both web and native项目地址: https://gitcode.com/GitHub_Trending/eg/eguiegui 是一个用 Rust 编写的即时模式Immediate ModeGUI 库即每帧重建整个界面的渲染方式解决写一套代码桌面和浏览器都能跑的问题。当前版本 0.36.1最小示例只要 33 行。一分钟看懂全貌egui 的定位是极简的跨平台 GUI核心egui负责布局和交互eframe负责窗口、输入和渲染入口同一套 UI 代码在桌面和 Web 通用。渲染后端可选 OpenGLglow或 WebGPUwgpu对你是透明的。对比维度egui即时模式传统 GUIQt、WinUI 等保留模式状态保存你只存业务数据每帧重绘整个 UI框架保存控件树数据与控件要手动双向同步写一个按钮ui.button(OK)一行实例化控件、设属性、绑信号跨平台桌面/浏览器共用一套 UI 代码通常逐平台移植学习成本先跑通示例再理解概念需先理解事件循环、信号槽等自定义绘制直接拿 Painter 画见 painter.rs多靠子类化或样式表跑起来的最短路径克隆仓库当前仓库版本 0.36.1git clone https://gitcode.com/GitHub_Trending/eg/egui仓库自带 示例目录最短的是hello_world_simple没有 struct逻辑全在 33 行里。直接运行cargo run -p hello_world_simple你会看到一个 320×240 的窗口一个输入框、一个滑块和一个按钮。核心代码长这样完整可运行版本在 hello_world_simple/src/main.rsuse eframe::egui; fn main() - eframe::Result { let options eframe::NativeOptions { viewport: egui::ViewportBuilder::default().with_inner_size([320.0, 240.0]), ..Default::default() }; let mut age 42; eframe::run_ui_native(My egui App, options, move |ui, _frame| { egui::CentralPanel::default().show(ui, |ui| { ui.heading(My egui Application); ui.add(egui::Slider::new(mut age, 0..120).text(age)); if ui.button(Increment).clicked() { age 1; } ui.label(format!(age: {age})); }); }) }先搞懂这几个核心概念即时模式UI 不持久存在。每帧你调用一次ui闭包从上到下重新声明界面。好处是没有数据改了控件不刷新这类问题——数据变了下一帧自然画出来。eframe帮你管主循环窗口、事件循环、渲染全由 crates/eframe/ 接管你只写 UI 闭包。渲染后端在 native 目录 里按 glow 或 wgpu 自动选择。Response是交互的返回值ui.button(x)返回一个Response对它调.clicked()、.hovered()就知道用户做了什么。控件即函数这也是即时模式没有控件树的原因。两个典型场景看看实际效果场景一看全量组件长什么样。运行仓库自带的演示应用源码在 crates/egui_demo_lib/cargo run -p egui_demo_lib它会打开一个多窗口 Demo覆盖滑块、表格、弹窗、文本编辑等几乎所有组件每个窗口对应一段可对照的源码。场景二给游戏加设置面板。典型做法就是hello_world_simple的放大版结构体存游戏状态音量、分辨率等每帧在ui闭包里把状态映射成滑块和复选框用户拖动时直接改字段。不需要任何胶水代码因为状态本身就是唯一数据源。避坑清单现象中文显示成方框。→原因默认字体在 epaint_default_fonts/fonts 里只有拉丁字符。→解决往cc.egui_ctx的字体配置里加一个中文字体文件再set_fonts。现象按cargo run没有窗口弹出。→原因eframe的渲染依赖 OpenGL/WGPU裸终端环境可能缺驱动或后端。→解决确认桌面环境正常或用RUST_LOGdebug cargo run -p hello_world看报错。现象想加图片ui.image却加载不了。→原因egui核心不含图片解码器加载器在egui_extras。→解决调用egui_extras::install_image_loaders(cc.egui_ctx)hello_world示例里就有这一行。现象窗口大小和代码写的不一样。→原因with_inner_size是初始值用户可缩放。→解决需要固定大小时在ViewportBuilder上追加.with_resizable(false)。现象界面没变化时 CPU 占用高。→原因即时模式默认每帧重绘。→解决只在状态变化时调用ctx.request_repaint()空闲帧eframe会自行跳过。现象升级版本后编译报错。→原因egui 处于 0.xAPI 有破坏性变更本仓库示例用的就是最新的eframe::App::ui签名。→解决以仓库内当前示例为准别照抄旧教程代码。继续深入examples/20 多个独立小项目从hello_world到custom_3d_glow、multiple_viewports适合刚跑通后挨个试10 分钟一个。crates/egui_demo_lib/演示应用源码适合想学某个组件怎么组合出来的时对着读。crates/egui/src/核心源码containers/、widgets/目录结构与 UI 概念一一对应适合排查布局行为。docs/accessibility.md无障碍支持说明适合要给界面加读屏器支持时看。tests/egui_tests/带截图快照的回归测试适合想看官方怎么断言 UI 长相时参考。建议第一步就克隆仓库跑cargo run -p hello_world_simple窗口弹出来后再打开egui_demo_lib逛一圈。egui 的上手曲线就藏在这两个命令里。【免费下载链接】eguiegui: an easy-to-use immediate mode GUI in Rust that runs on both web and native项目地址: https://gitcode.com/GitHub_Trending/eg/egui创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

从脚本到exe:Python与Java程序打包排错实战指南

从脚本到exe:Python与Java程序打包排错实战指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/11/10 20:16:06 阅读更多 →
FreeCAD扩展管理器:5步装好、管好、排错FreeCAD插件的实用指南

FreeCAD扩展管理器:5步装好、管好、排错FreeCAD插件的实用指南

FreeCAD扩展管理器:5步装好、管好、排错FreeCAD插件的实用指南 【免费下载链接】FreeCAD Official source code of FreeCAD, a free and opensource multiplatform 3D parametric modeler. 项目地址: https://gitcode.com/GitHub_Trending/fr/FreeCAD 刚装好…

2026/11/8 10:20:57 阅读更多 →
《我的世界》Bedwars进阶指南:从资源运营到实战技巧的全面解析

《我的世界》Bedwars进阶指南:从资源运营到实战技巧的全面解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/30 22:07:39 阅读更多 →

最新新闻

Electron桌面应用开发实战:从环境搭建到打包发布全流程

Electron桌面应用开发实战:从环境搭建到打包发布全流程

做前端这些年,我大部分时间都在跟浏览器标签页打交道,直到第一次把桌面应用跑起来,才发现原来自己一直被限制在地址栏和刷新按钮围起来的框框里。Electron这个词,最开始是在某段时间频繁出现在同事的讨论里,一个用HTML…

2026/11/9 14:01:10 阅读更多 →
滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

简介:亚太天能T109滑盖智能锁产品说明书是一份PDF格式的官方技术文档,主要面向智能锁安装人员、终端用户及售后维护者,帮助快速掌握产品安装、配置与常见故障处理。全包仅1个PDF文件,大小4.37MB,内容结构清晰&#xff…

2026/11/9 14:56:39 阅读更多 →
PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

上个月我在调试一台高速AGV的驱动系统,整车要求空载跑到8m/s,电机转速已经拉到额定点,驱动器的输出电压也顶到了母线电压极限附近。再往上踩速度指令,转速纹丝不动,三相电流反而开始震荡。那会儿我的第一反应就是&…

2026/11/10 2:03:25 阅读更多 →
C++核心知识点:从内存管理到STL的实战指南

C++核心知识点:从内存管理到STL的实战指南

C 这门语言我前前后后折腾了十几年,用它写过嵌入式驱动、做过游戏服务端,也搭过基础组件库。每次看到新人一头扎进"C 核心知识点"这个搜索词,我其实挺感慨的——这门语言的难点从来不是语法多,而是知识点之间的耦合太深…

2026/11/10 16:14:15 阅读更多 →
T109滑盖智能锁怎么装?安装调试与故障排查全攻略

T109滑盖智能锁怎么装?安装调试与故障排查全攻略

简介:亚太天能T109滑盖智能锁产品说明书以PDF格式发布,适合智能锁用户、安装人员与售后维修人员阅读。内容围绕T109系列指纹密码刷卡锁展开,先介绍前面板、后面板、锁体、机械钥匙、电池盒盖等部件名称与功能,再给出完整安装步骤&…

2026/11/10 12:51:50 阅读更多 →
LLM知识降熵:从信息垄断到理解权下放

LLM知识降熵:从信息垄断到理解权下放

你有没有过这种经历:翻开源码注释、论文摘要或者一份专业报告,每个字都认识,连在一起却像天书。想找人聊聊,身边要么没人懂,要么懂的懒得跟你解释。后来我试着把同一段内容丢给一个大语言模型,几秒钟之后&a…

2026/11/9 14:01:11 阅读更多 →

日新闻

周新闻

月新闻