4 个版本 (2 个破坏性更新)

0.3.0 2023 年 3 月 20 日
0.2.0 2023 年 3 月 11 日
0.1.1 2022 年 11 月 20 日
0.1.0 2022 年 9 月 17 日

#1094GUI

Download history 3/week @ 2024-03-13 2/week @ 2024-03-20 6/week @ 2024-03-27 13/week @ 2024-04-03

每月 247 次下载

Apache-2.0 OR MIT

1MB
946

tauri-egui

status License test library Chat Server website https://good-labs.github.io/greater-good-affirmation/assets/images/badge.svg support

关于 tauri-egui

tauri-egui 是一个 Tauri 插件,用于通过 glutin 在 Tauri 应用程序中使用 egui 库egui 是一个纯 Rust GUI 库,本地运行,由 Tauri 团队推荐用于安全上下文,如密码和秘密界面。

示例

use tauri::Manager;
use tauri_egui::{eframe, egui, EguiPluginBuilder, EguiPluginHandle};

struct LoginApp {
  password: String,
  on_submit: Box<dyn Fn(&str) -> bool + Send>,
}

impl LoginApp {
  fn new<F: Fn(&str) -> bool + Send + 'static>(
    ctx: &eframe::CreationContext,
    on_submit: F,
  ) -> Self {
    Self {
      password: "".into(),
      on_submit: Box::new(on_submit),
    }
  }
}

impl eframe::App for LoginApp {
  fn update(&mut self, ctx: &egui::Context, frame: &mut eframe::Frame) {
    let LoginApp {
      password,
      on_submit,
    } = self;
    egui::CentralPanel::default().show(ctx, |ui| {
      ui.label("Enter your password");
      let textfield = ui.add_sized(
        [ui.available_width(), 24.],
        egui::TextEdit::singleline(password).password(true),
      );
      let button = ui.button("Submit");
      if (textfield.lost_focus() && ui.input().key_pressed(egui::Key::Enter)) || button.clicked() {
        if on_submit(password) {
          frame.close();
        }
      }
    });
  }
}

fn main() {
  tauri::Builder::default()
    .setup(|app| {
      app.wry_plugin(EguiPluginBuilder::new(app.handle()));
      let egui_handle = app.state::<EguiPluginHandle>();

      let native_options = eframe::NativeOptions {
        drag_and_drop_support: true,
        initial_window_size: Some([1280.0, 1024.0].into()),
        ..Default::default()
      };

      let _window = egui_handle
        .create_window(
          "native-window".to_string(),
          Box::new(|cc| Box::new(LoginApp::new(cc, |pwd| pwd == "tauriisawesome"))),
          "Login".into(),
          native_options,
        )
        .unwrap();

      Ok(())
    })
    .run(tauri::generate_context!("examples/demo/tauri.conf.json"))
    .expect("error while building tauri application");
}

语义版本

tauri-egui 遵循 语义版本 2.0

许可证

代码: (c) 2019 - 2022 - The Tauri Programme within The Commons Conservancy.

适用于的 MIT 或 MIT/Apache 2.0。

依赖项

~32–78MB
~1.5M SLoC