回答
關於在API docs here中構建原生自定義應用程序菜單的文檔很多。有很多選項和功能以及平臺差異。
例如,在你的主進程的代碼,你可以做這樣的事情:
const { app, BrowserWindow, Menu } = require('electron');
const path = require('path');
let mainWindow;
app.on('ready',() => {
mainWindow = new BrowserWindow();
mainWindow.loadURL(path.join('file://', __dirname, 'index.html'));
setMainMenu();
});
function setMainMenu() {
const template = [
{
label: 'Filter',
submenu: [
{
label: 'Hello',
accelerator: 'Shift+CmdOrCtrl+H',
click() {
console.log('Oh, hi there!')
}
}
]
}
];
Menu.setApplicationMenu(Menu.buildFromTemplate(template));
}
這將創建一個標籤「過濾器」的應用程序級菜單,打開會顯示標示爲單個菜單項時「你好」。點擊它登錄到控制檯。
請注意,當您使用electron-prebuilt
時,它總是會在左上角顯示「Electron」。當您將應用程序作爲獨立應用程序編譯(不通過電子預編譯運行)時,它會在那裏顯示您的應用程序名稱。
正如@neonhomer指出的,這個API必須在app模塊的ready事件之後調用。
我還應該補充一點,在開發中使用Electron時,默認的Electron應用程序將爲您提供默認菜單(請參閱https://github.com/electron/electron/blob/d26e4a4abf9dfc277974c6c9678a24a5f9e4d104/default_app/main.js#L48)。當你打包你的應用時,那不會在那裏。
有API文檔在一張小紙條: http://electron.atom.io/docs/api/menu/#menusetapplicationmenumenu
注意:此API具有應用模塊的準備事件後調用。
有趣的是,它的作品直接在Windows中調用。
這裏有一個簡單的例子:
const {app, BrowserWindow, Menu} = require('electron')
const menuTemplate = [...]
const menu = Menu.buildFromTemplate(menuTemplate)
let win
function createWindow() {
win = new BrowserWindow({ width: 800, height: 600, })
win.loadURL(`file://${__dirname}/index.html`)
win.on('closed',() => {
win = null
})
}
app.on('ready',() => {
Menu.setApplicationMenu(menu)
createWindow()
})
app.on('window-all-closed',() => {
app.quit();
})
app.on('activate',() => {
if (win === null) {
createWindow()
}
})
還有一件有趣的事情是,如果MenuItem是'visible:false',它仍然可以在Windows中用作鍵盤快捷鍵,但不會在macOS上使用。 – neonhomer
- 1. 如何添加自定義菜單Sitecore的菜單列表
- 2. Excel VBA - 將子菜單添加到自定義右鍵菜單
- 3. Wordpress將子菜單添加到自定義菜單
- 4. opencart在頁眉菜單中添加一個自定義菜單
- 5. 如何在上下文菜單的子菜單中添加子菜單項
- 6. Outlook AddIn在電子郵件中添加自定義菜單項
- 7. 如何在WHMCS中添加子菜單的新菜單?
- 8. 如何在OSCmax中添加子菜單項的管理菜單?
- 9. Qt的添加菜單欄,菜單和子菜單的QMainWindow
- 10. 將子菜單添加到菜單樹
- 11. 在Eclipse Open Perspective菜單中添加自定義透視圖子菜單
- 12. 將自定義菜單項添加到WordPress菜單
- 13. 將自定義菜單項添加到Finder上下文菜單
- 14. 不能添加更多菜單到wordpress自定義菜單
- 15. 自定義Joomla子菜單
- 16. android:自定義子菜單
- 17. 菜單中的子菜單
- 18. 添加自定義菜單項的DataGrid
- 19. 菜單內菜單內的子菜單?
- 20. 如何添加一個子菜單項目的谷歌電子表格菜單
- 21. 如何將子菜單添加到此響應菜單中?
- 22. 將子菜單添加到上下文菜單條的特定菜單項
- 23. 將子菜單添加到Joomla 1.7中的菜單子項中
- 24. 添加自定義Magento菜單
- 25. 如何添加子菜單項的菜單項
- 26. 如何添加一個響應CSS菜單的子菜單
- 27. 如何在Qt中添加子菜單
- 28. Electron OSX應用程序菜單 - 如何添加自定義文件菜單?
- 29. 當菜單有特定的類添加子菜單
- 30. 在Wordpress菜單中的菜單中建立一個子菜單
到目前爲止,這個例子並沒有爲我工作對優勝美地Mac.Electron 1.2。 –
它不工作,你在@neonhomer顯示引起注意回答: 「這個API必須在應用程序模塊的準備好事件後調用」 – vedi
@vedi謝謝,剛更新它。 – ccnokes