#dialog #message #file #macos #boxes #native #bsd

native-dialog

一个用于显示对话框的库。支持 GNU/Linux、BSD Unix、macOS 和 Windows。

27 个版本

0.7.0 2023年10月31日
0.6.4 2023年6月10日
0.6.3 2022年1月22日
0.6.1 2021年12月3日
0.4.1 2020年7月29日

#34 in GUI

Download history 4386/week @ 2024-04-28 4804/week @ 2024-05-05 4793/week @ 2024-05-12 5404/week @ 2024-05-19 5562/week @ 2024-05-26 5657/week @ 2024-06-02 6392/week @ 2024-06-09 7613/week @ 2024-06-16 6507/week @ 2024-06-23 7757/week @ 2024-06-30 9489/week @ 2024-07-07 7556/week @ 2024-07-14 12739/week @ 2024-07-21 12579/week @ 2024-07-28 10453/week @ 2024-08-04 10574/week @ 2024-08-11

46,803 个月下载量
用于 38 个 crates (33 直接)

MIT 许可证

70KB
2K SLoC

native-dialog

Crates.io Docs.rs License

一个用于显示文件选择器和消息框的库。支持 GNU/Linux、BSD Unix、macOS 和 Windows。

安装

cargo add native-dialog

使用

use native_dialog::{FileDialog, MessageDialog, MessageType};

fn main() {
    let path = FileDialog::new()
        .set_location("~/Desktop")
        .add_filter("PNG Image", &["png"])
        .add_filter("JPEG Image", &["jpg", "jpeg"])
        .show_open_single_file()
        .unwrap();

    let path = match path {
        Some(path) => path,
        None => return,
    };

    let yes = MessageDialog::new()
        .set_type(MessageType::Info)
        .set_title("Do you want to open the file?")
        .set_text(&format!("{:#?}", path))
        .show_confirm()
        .unwrap();

    if yes {
        do_something(path);
    }
}

其他

为什么在 Windows 上对话框看起来很丑/模糊?

启用 crate 功能或将清单嵌入到 .exe 中以启用程序的视觉样式和 dpi 支持。请参阅 examples/windows_manifestexamples/windows_features 示例。

为什么在 macOS 上打开对话框时程序崩溃?

macOS 的 UI 框架 (Cocoa) 有一个限制,即所有 UI 操作都必须在主线程上执行。

Linux 依赖项

native-dialog 的 Linux 实现需要安装 Zenity 或 Kdialog。否则您将得到 No Implementation 错误。

依赖项

~0.4–10MB
~109K SLoC