电子-仅在主窗口上显示菜单

Dav*_*ton 1 javascript electron

我是在Windows上用Electron写作的新手。当我创建一个时,menuTemplate这将显示在所有打开的窗口中。有没有办法只在我的菜单上显示mainWindow?(不在我创建的弹出窗口上)

Index.js

const electron = require('electron');

const { app, BrowserWindow, Menu } = electron;

let mainWindow;
let addWindow;

app.on('ready', () => {
  mainWindow = new BrowserWindow({});
  mainWindow.loadURL(`file://${__dirname}/main.html`);
  mainWindow.on('closed', () => app.quit());

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

function createAddWindow() {
  addWindow = new BrowserWindow({
    width: 300,
    height: 200,
    title: 'Add New Todo'
  });
  addWindow.loadURL(`file://${__dirname}/add.html`)
}

const menuTemplate = [
  {
    label: 'File',
    submenu: [
      {
        label: 'New Todo' ,
        click() { createAddWindow(); }
      },
      {
        label: 'Quit',
        accelerator: process.platform === 'darwin' ? 'Command+Q' : 'Ctrl+Q',
        click() {
          app.quit();
        }
      }
    ]
  }
];

if (process.platform === 'darwin') {
  menuTemplate.unshift({});
}
Run Code Online (Sandbox Code Playgroud)

Roy*_*ong 6

更改Menu.setApplicationMenu(mainMenu);mainWindow.setMenu(mainMenu)

Menu.setApplicationMenu套菜单所有 BrowserWindows,而win.setMenu将其设置为只在窗口它被称为上。

  • 使用`Menu.setApplicationMenu(null)`禁用默认菜单(Mac仍将菜单置于最顶部)。然后像往常一样使用mainWindow的mainWindow.setMenu(mainMenu)设置菜单。 (2认同)