与任何标准 native 应用程序一样,我的 Electron 应用程序也需要根据实时使用结果更改多个菜单项的状态(启用/禁用)。
我在 main.js 中设置我的菜单:
function createWindow () {
...
...
require('./menu/mainmenu');
}
我需要更改的 MenuItem 在主菜单中定义:
{ label: "Show Colors",
accelerator: 'CmdOrCtrl+1',
enabled: getStatus(),
click() {getWebviewWebContents().send('switchToColors');}
},
其中 getStatus()
是返回 false
或 true
的函数。
所有这些在 Electron 中都不起作用,因为菜单是在应用程序启动时创建的,根本无法修改。我认为这是一个严重的缺陷,因为动态菜单项非常普遍(即:菜单复选框、启用/禁用等)。
有解决办法吗?
最佳答案
我已经通过为菜单项设置一个 Id 来解决这个问题,
{ label: "Show Colors",
id: 'color-scale',
accelerator: 'CmdOrCtrl+1',
enabled: getStatus(),
click() {getWebviewWebContents().send('switchToColors');}
},
并获取菜单项:
myItem = menu.getMenuItemById('color-scale')
然后,当我需要以编程方式启用/禁用它时,我正在使用:
myItem.enabled = true
或
myItem.enabled = false
关于javascript - 动态更改 Electron 的菜单项的状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47756822/