自定义菜单栏没有显示在Mac上?

时间:2019-04-01 09:59:35

标签: javascript electron

正在显示开发人员menubar而不是我的自定义菜单栏,并且我确实在menuTemplate中添加了空对象,但仍然无法正常工作。

我正在使用Mac

我尝试将浏览器窗口的菜单设置为null
仍然没有显示我的自定义menubar

const electron = require('electron');
const{app,BrowserWindow,Menu} = electron;
const url = require("url");
const path = require("path")

let mainWindow;
let addWindow;
app.on('ready', function(){
  mainWindow = new BrowserWindow({});
  mainWindow.loadURL(url.format({
    pathname: path.join(__dirname, "index.html"),
    protocol: 'file: ',
    slashes: true
  }));

  const mainMenu = Menu.buildFromTemplate(menuTemplate);
  Menu.setApplicationMenu(mainMenu);
});

function createAddWindow(){
  addWindow = new BrowserWindow({
    width: 300,
    height: 200,
    title: " Add shopping list item"
  });
  addWindow.loadURL(url.format({
    pathname: path.join(__dirname, "subwindow.html"),
    protocol: 'file: ',
    slashes: true
  }));
}
// create menu template
const menuTemplate = [
  {},
  {
    Label: "file",
    submenu:[
      {
        Label: "add item",
        click(){
          createAddWindow();
        }
      },{
        Label: "clear items"
      },{
        label: "quit",
        accelerator: process.platform == "darwin" ? 'Command+Q' : 'Ctrl+Q',
        click(){
          app.quit();
        }
      }]
  }
]

我想显示我的自定义menubar

1 个答案:

答案 0 :(得分:0)

您的菜单模板在启动时会导致我出错(在Ubuntu上为Electron 4.1.3)。

我删除了索引0处的空对象,并将Label更改为label。另外,我认为您可以将CmdOrCtrl用作加速器。

const menuTemplate = [
  {
    label: "file",
    submenu: [
      {
        label: "add item",
        click(){
          createAddWindow();
        }
      },{
        label: "clear items"
      },{
        label: "quit",
        accelerator: 'CmdOrCtrl+Q',
        click(){
          app.quit();
        }
      }]
  }
]

这将显示以下菜单:

Screenshot of the menu