将系统托盘菜单项设置为在启动 Tauri 托盘应用程序时禁用



我有一个基本的托盘应用程序,它设置自定义菜单项的托盘菜单,并通过tauri::Builder::d efault().system_tray将其分配给应用程序。

在启动时,我希望禁用除一个菜单项之外的所有菜单项。我无法访问将启用设置为false的菜单项方法,因此尝试使用tray_handle在.setup中获取该项目和set_enabled(false)。但是,此时未配置托盘。

如何在应用设置期间设置菜单项状态?蒂亚

我当前(失败)的代码:

let opt1 = CustomMenuItem::new("opt1".to_string(), "Option 1");
let opt2 = CustomMenuItem::new("opt2".to_string(), "Option 2");
let tray_menu = SystemTrayMenu::new()
.add_item(opt1)
.add_item(opt2);
tauri::Builder::default()
.system_tray(SystemTray::new().with_menu(tray_menu))
.setup(|app| {
...
let tray_handle = app.handle().tray_handle();
tray_handle.get_item(&"opt1".to_string()).set_enabled(false);
...
})
.run(tauri::generate_context!())
.expect("error while running tauri application");

在将CustomMenuItem添加到菜单之前,您可以使用.disabled()将其设置为禁用。

例:

SystemTray::new().with_menu(SystemTrayMenu::new()
.add_item(CustomMenuItem::new("action".to_string(), "Loading...").disabled())
.add_item(CustomMenuItem::new("quit".to_string(), "Quit"))
)

请注意第一个菜单项上的.disabled()

此代码给出一个包含两个项的菜单,其中一个被禁用。

最新更新