egui 开源项目教程
项目介绍
egui 是一个用 Rust 编写的即时模式图形用户界面(GUI)库,它可以在 Web 和原生平台上运行。egui 的设计目标是易于使用、响应快速、友好、可移植、易于集成、模块化、安全,并且依赖最小化。它不是一个框架,而是一个库,你可以调用它,而不是为它编程。
项目快速启动
安装依赖
在开始之前,确保你的系统上安装了以下依赖:
- libxkbcommon-devel
- pkg-config
- openssl-devel
- libxcb-devel
- gtk3-devel
- atk
- fontconfig-devel
编写第一个 egui 应用
以下是一个简单的 egui 应用示例:
use egui::{Context, CentralPanel, Window, Slider, Ui};
use eframe::{App, Frame, CreationContext};
struct MyApp {
name: String,
age: u32,
}
impl App for MyApp {
fn update(&mut self, ctx: &Context, _frame: &mut Frame) {
Window::new("My egui Application").show(ctx, |ui| {
ui.horizontal(|ui| {
ui.label("Your name: ");
ui.text_edit_singleline(&mut self.name);
});
ui.add(Slider::new(&mut self.age, 0..=120).text("age"));
if ui.button("Increment").clicked() {
self.age += 1;
}
ui.label(format!("Hello '{}', age {}", self.name, self.age));
});
}
}
impl MyApp {
fn new(_cc: &CreationContext<'_>) -> Self {
MyApp {
name: "World".to_owned(),
age: 42,
}
}
}
fn main() {
let options = eframe::NativeOptions::default();
eframe::run_native(
"My egui App",
options,
Box::new(|cc| Box::new(MyApp::new(cc))),
);
}
运行应用
将上述代码保存为一个 Rust 文件(例如 main.rs
),然后使用 cargo
运行它:
cargo run
应用案例和最佳实践
应用案例
egui 可以用于各种类型的应用,包括但不限于:
- 桌面应用
- Web 应用
- 游戏界面
- 数据可视化工具
最佳实践
- 保持简洁:egui 的设计理念是简洁和直观,尽量保持代码的简洁性。
- 模块化:利用 egui 的模块化特性,只使用你需要的功能。
- 响应式设计:确保你的界面在不同设备和屏幕尺寸上都能良好地响应。
典型生态项目
egui 拥有丰富的生态系统,以下是一些典型的生态项目:
- egui-winit-ash-integration:为 winit 和 ash 提供集成。
- fltk-egui:为 fltk-rs 提供集成。
- ggegui:为 ggez 游戏框架提供集成。
- godot-egui:为 godot-rust 提供集成。
- nannou_egui:为 nannou 提供集成。
- notan_egui:为 notan 提供集成。
- screen-13-egui:为 Screen 13 提供集成。
- egui_skia:为 skia 提供集成。
- smithay-egui:为 smithay 提供集成。
- tauri-egui:为 tauri 提供集成。
这些项目扩展了 egui 的功能,使其能够与更多的框架和库集成,从而提供更广泛的应用场景。