电子应用菜单工作示例

时间:2016-12-21 09:08:53

标签: electron

我是Electron的新手,在查找应用程序菜单的工作示例时遇到了问题。

尝试将Quick Start应用与电子文档的Class: Menu页面中的示例结合使用时,似乎没有任何事情发生变化 - 查找label值无效。

谷歌搜索引发的问题多于解决的问题 - 例如,我是否需要将应用程序打包以在应用程序菜单中进行更改,或者是否需要将main.jspackage.json移至{{ 1}}(如果是的话,我需要打包它来运行它吗?)

有没有更好的方法来获得Electron ......?

修改

当我在OSX上将我的应用添加到我的应用程序时,应用程序菜单有一个条目 - $projectRoot/resources/app,有一个选项,Electron

Quit

3 个答案:

答案 0 :(得分:10)

您无需打包应用程序即可更改应用程序菜单。发出Menu.setApplicationMenu()事件后,请检查您是否正在呼叫ready,例如

app.on('ready', () => {
  const menu = Menu.buildFromTemplate(template)
  Menu.setApplicationMenu(menu)
})

答案 1 :(得分:0)

很难看出prb是什么,因为你没有提供任何代码。但是,这里应该如何工作:在main.js中执行此操作:

var MenuItem = require('menu-item');

然后创建一个函数createMenu:

global.yourApp = {
        init() {
            whatsApp.createMenu();            
            config.init();
        },

        createMenu() {
            yourApp.menu =
                AppMenu.buildFromTemplate(require('./menu'));
                AppMenu.setApplicationMenu(yourApp.menu);
        }
}

./ menu您将拥有看起来像这样的menu.js文件:

    (function(scope) {
        "use strict";

        var template = [
            {
                label: 'Edit',
                submenu: [
                    {
                        label: 'Undo',
                        accelerator: 'CmdOrCtrl+Z',
                        role: 'undo'
                    }
                   ......
              ]
    }]
})(this);

答案 2 :(得分:-1)

从我有限的经历: "我是否需要打包我的应用程序才能在应用程序菜单中进行更改"?

是。这可能是你的根本原因。

默认电子cmd包含" chrome"应用程序外壳程序,并不使用任何包含的菜单更改代码。您只需获得默认的菜单结构。