egui
GUIs de modo imediato em Rust com egui e eframe - iteração rápida para ferramentas, inspetores e utilitários.
Busque em todas as páginas da documentação
GUIs de modo imediato em Rust com egui e eframe - iteração rápida para ferramentas, inspetores e utilitários.
eframe::run_native(
"Minha Ferramenta",
eframe::NativeOptions::default(),
Box::new(|cc| {
egui_extras::install_image_loaders(&cc.egui_ctx);
Ok(Box::new(MyApp::default()))
}),
)?;Quando usar isso:
bevy_egui)struct MyApp {
name: String,
age: u32,
}
impl Default for MyApp {
fn default() -> Self {
Self {
name: "Alice".into(),
age: 30,
}
}
}
impl eframe::App for MyApp {
fn update(&mut self, ctx: &egui::Context, _frame: &mut eframe::Frame) {
egui::CentralPanel::default().show(ctx, |ui| {
ui.heading("Perfil");
ui.text_edit_singleline(&mut self.name);
ui.add(egui::Slider::new(&mut self.age, 0..=120));
if ui.button("Cumprimentar").clicked() {
println!("Olá {}, idade {}", self.name, self.age);
}
});
}
}O que isso demonstra:
self a cada frameupdate -> layout dos widgets -> pintura.Context solicita repintura quando animações ou dados assíncronos chegam.| Modo | egui | iced |
|---|---|---|
| Modelo | Reconstrói a UI a cada frame | Difere a árvore de widgets |
| Melhor para | Ferramentas | Aplicativos de consumidor |
update - causa queda de frames. Correção: compute em thread de background, consulte resultados via canal.ui.push_id para listas dinâmicas.pixels_per_point apropriadamente.| Alternativa | Use Quando | Não Use Quando |
|---|---|---|
| iced | Arquitetura Elm, aparência nativa | Precisa do ecossistema HTML |
| Tauri | Designers web na equipe | Quer UI de linguagem única |
| Slint | UI declarativa com ferramenta de design | Preferência pura por modo imediato |
| GTK via gtk-rs | Integração GNOME | UX idêntica multiplataforma |
eframe é o início mais rápido; integração customizada ao incorporar em uma engine de jogos.
Visuals::dark() / light() ou Spacing e Style customizados no Context.
Crate egui_plot para gráficos de linha/dispersão dentro do mesmo loop de modo imediato.
ctx.request_repaint() quando a thread de background preenche o buffer; leia sob Mutex em update.
egui no Android/iOS é possível, mas não é o foco principal - teste os alvos de toque cuidadosamente.
Plugin bevy_egui para overlays dentro do jogo - veja a seção de desenvolvimento de jogos.
Serializa o estado para JSON ao sair - não é automático como frameworks de UI retidos.
Use rótulos/IDs consistentes em loops; helper Memory para posições de janela.
Integração puffin ou tracy; reduza a contagem de widgets por painel.
Veja Estado e Arquitetura para aplicativos maiores.
Versões da Stack: Esta página foi escrita para Rust 1.97.0 (edição 2024), Tokio 1.x, Axum 0.8, serde 1.0, sqlx 0.8, clap 4, e Polars 0.46+.
Revisado por Chris St. John·Última atualização: 16 de jul. de 2026