7 个版本 (4 个重大变更)

0.23.0 2023 年 6 月 15 日
0.22.0 2023 年 3 月 18 日
0.21.0 2023 年 3 月 10 日
0.20.1 2022 年 11 月 12 日
0.19.1 2022 年 8 月 25 日

#351GUI


用于 tauri-egui

MIT/Apache

1.5MB
31K SLoC

eframe_tao:为 tao 定制的 egui 框架

Latest version Documentation MIT Apache

eframe_tao 是对 eframe 的修改,使用 tao 而不是 winit

eframe 是使用 egui 编写应用的官方框架库。应用可以编译为本地运行(跨平台)或编译为网页应用(使用 WASM)。

要开始使用,请参阅 示例。要了解如何为网页和本地设置 eframe,请访问 https://github.com/emilk/eframe_template/ 并按照那里的说明进行操作!

还有一个教程视频在 https://www.youtube.com/watch?v=NtUkr_z7l84

有关如何使用 egui 的信息,请参阅 egui 文档


eframe 使用 egui_glow_tao 进行渲染,在本地使用 egui-tao

要在 Linux 上使用,首先运行

sudo apt-get install libxcb-render0-dev libxcb-shape0-dev libxcb-xfixes0-dev libxkbcommon-dev libssl-dev

您需要使用 edition = "2021",或者在您的顶层 Cargo.toml 文件的 [workspace] 部分中设置 resolver = "2"。有关更多信息,请参阅此链接

替代方案

您还可以使用 egui_glowwinit 来构建自己的应用程序,如https://github.com/emilk/egui/blob/master/crates/egui_glow/examples/pure_glow.rs中所示。

在网页上运行egui时的问题

eframe 使用 WebGL(通过 glow)和 WASM,以及其他几乎来自网页技术栈的内容。这有一些好处,但也产生了一些挑战和严重的缺点。

  • 渲染:在网页上实现像素级的渲染非常困难。
  • 搜索:您无法像普通网页那样搜索 egui 网页。
  • 在移动设备上显示屏幕键盘:没有 JS 函数可以做到这一点,所以 eframe 通过添加一些不可见的 DOM 元素来伪造它。这并不总是有效。
  • 移动文本编辑不如普通网页应用程序。
  • 无障碍性:有一个用于 eframe 的实验性屏幕阅读器,但必须明确启用。没有 JS 函数可以询问“用户是否需要屏幕阅读器?”(由于用户跟踪/完整性问题,可能不应该有这样的函数)。
  • 没有与浏览器颜色和字体设置的集成。

在许多方面,eframe 正试图让浏览器做它未被设计去做的事情(尽管浏览器供应商可以做很多事情来改善像 egui 这样的库的工作方式)。

建议使用 eframe 的场景是性能和响应性比无障碍性和移动文本编辑更重要的网页应用程序。

配套的 crate

并非所有的 rust crate 在编译为 WASM 时都能正常工作,但这里有一些设计得既能在本地运行也能作为 WASM 运行的有用 crate。

名称

eframe 中的 frame 既是您的 egui 应用程序所在的框架,也是“框架”(frame 是一个框架,egui 是一个库)。

依赖关系

~5–45MB
~708K SLoC