Как скрыть меню во втором окне в Electron? - PullRequest
0 голосов
/ 02 февраля 2020

Я делаю небольшое тестовое приложение, используя Electron, ниже приведен код.

При нажатии на about в меню появляется новое окно. Как сделать так, чтобы кнопки меню исчезали только в этом окне? Хотя это не должно происходить в главном окне.

const {app, BrowserWindow, Menu} = require('electron');
const globalElectron = require('electron');

let win;
let about;

function createWindow() {
    win = new BrowserWindow({
        width: 700,
        height: 500,
        webPreferences: {
            nodeIntegration: true
        }
    });

    win.loadURL('file://' + __dirname + '/index.html').then(r => r);
    win.webContents.openDevTools();
    win.on('closed', () => win = null);
}

function openAboutWindow()
{
    if (about) {
        about.focus();
        return
    }

    about = new BrowserWindow({
        height: 185,
        resizable: false,
        width: 270
    });

    about.loadURL('file://' + __dirname + '/about.html').then(r => r);
    about.on('closed', () => about = null);
}

app.on('ready', () => {
    createWindow();

    const template = [
        {
            label: 'Info',
            submenu: [
                {
                    label: 'GitHub',
                    click: () => {
                        globalElectron.shell.openExternal('https://github.com/').then(r => r);
                    }
                },
            ]
        },
        {
            label: 'About',
            click: () => {
                openAboutWindow();
            }
        }
    ];

    Menu.setApplicationMenu(Menu.buildFromTemplate(template));
});

app.on('window-all-closed', () => {
    app.quit();
});

Я только начинаю изучать это, поэтому я прошу прощения за возможное низкое качество структуры кода. Спасибо за помощь.

1 Ответ

1 голос
/ 02 февраля 2020

Чтобы скрыть меню в указанном окне c, вам необходимо вызвать .setMenu(null).

function openAboutWindow()
{
    if (about) {
        about.focus();
        return
    }

    about = new BrowserWindow({
        height: 185,
        resizable: false,
        width: 270
    });

    about.setMenu(null); // here!
    about.loadURL('file://' + __dirname + '/about.html').then(r => r);
    about.on('closed', () => about = null);
}

(Есть некоторые проблемы с этой функцией некоторые версии Electron, я могу подтвердить, что он хорошо работает на 7.1.11.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...