电子:如何从默认菜单中删除菜单项?
electron: How to remove a menu item from the default menu?
目标
我正在尝试从 Electron 应用程序的菜单中删除 Help
菜单。
我不想 setApplicationMenu
我自己的,因为使用默认菜单很好,除了帮助,它指向 Electron 自己的帮助页面。
尝试次数
我尝试了以下方法,但都失败了:
删除尾部项目,即帮助
var menu = Menu.getApplicationMenu();
menu.items.pop();
使其不可见
var menu = Menu.getApplicationMenu();
for(var i=0; i<menu.items.length; i++) {
if (menu.items[i].role == 'help') {
menu.items[i].visible = false;
break;
}
}
删除菜单
mainWindow.removeMenu();
这在我的 electron 版本 10.1.0 的 macOS 上不起作用。
问题
怎么了?我应该创建一个模板吗?
修改默认菜单后必须使用Menu.setApplicationMenu
const menu = Menu.getApplicationMenu(); // get default menu
menu.items.find((item) => item.role === "help").visible = false; // modify it
Menu.setApplicationMenu(menu); // set the modified menu
注意:根据我的经验,Menu.getApplicationMenu()
将 return null
如果它在应用 ready
事件之前被调用
menuItem.visible 在 Electron 13 中不起作用。相反,我构建了一个没有帮助项的新菜单。
const menu = Menu.getApplicationMenu()
const items = menu?.items.filter((item) => item.role !== 'help')
Menu.setApplicationMenu(Menu.buildFromTemplate(items))
目标
我正在尝试从 Electron 应用程序的菜单中删除 Help
菜单。
我不想 setApplicationMenu
我自己的,因为使用默认菜单很好,除了帮助,它指向 Electron 自己的帮助页面。
尝试次数
我尝试了以下方法,但都失败了:
删除尾部项目,即帮助
var menu = Menu.getApplicationMenu();
menu.items.pop();
使其不可见
var menu = Menu.getApplicationMenu();
for(var i=0; i<menu.items.length; i++) {
if (menu.items[i].role == 'help') {
menu.items[i].visible = false;
break;
}
}
删除菜单
mainWindow.removeMenu();
这在我的 electron 版本 10.1.0 的 macOS 上不起作用。
问题
怎么了?我应该创建一个模板吗?
修改默认菜单后必须使用Menu.setApplicationMenu
const menu = Menu.getApplicationMenu(); // get default menu
menu.items.find((item) => item.role === "help").visible = false; // modify it
Menu.setApplicationMenu(menu); // set the modified menu
注意:根据我的经验,Menu.getApplicationMenu()
将 return null
如果它在应用 ready
事件之前被调用
menuItem.visible 在 Electron 13 中不起作用。相反,我构建了一个没有帮助项的新菜单。
const menu = Menu.getApplicationMenu()
const items = menu?.items.filter((item) => item.role !== 'help')
Menu.setApplicationMenu(Menu.buildFromTemplate(items))