【问题标题】:Electron Application Menu Working Example电子应用程序菜单工作示例
【发布时间】:2016-12-21 09:08:53
【问题描述】:

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

当尝试将 Quick Start 应用程序与 Electron 文档的 Class: Menu 页面中的示例结合起来时,似乎什么也没发生 - 更改 label 值没有任何效果。

谷歌搜索引发的问题多于它解决的问题,例如,我是否需要打包我的应用程序以更改应用程序菜单,或者我是否需要将我的 main.jspackage.json 移动到 $projectRoot/resources/app(如果那么,是否需要打包运行)?

有没有更好的方法来掌握 Electron 的窍门...?

编辑

当我在 OSX 上将以下内容添加到我的应用程序时,应用程序菜单有一个条目 — Electron,还有一个选项 Quit

const electron = require('electron');
var menu = electron.Menu.buildFromTemplate([
    {
        label: 'Electron',
        submenu: [
        {
            label: 'Options',
            click: function() {
                alert('Test');
            }
        }
        ]
    }
]);

electron.Menu.setApplicationMenu(menu);

【问题讨论】:

  • 嗨,我也是电子新手,我正在使用它开发两个应用程序,其中一个是 github.com/thefailtheory/ANN-Stock-Prediction,我还没有尝试显示菜单,因为我使用引导程序跨度>
  • 如果您希望有人帮助您找出为什么它没有按预期工作,请将您的代码上传到 GitHub 存储库。
  • @LeeGee 在应用发出ready 事件后,您是否在调用Menu.setApplicationMenu()
  • @VadimMacagon — 解决了问题 — 非常感谢,先生!是的,现在很明显......!

标签: electron


【解决方案1】:

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

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

【讨论】:

【解决方案2】:

由于您没有提供任何代码,因此很难看到 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);

【讨论】:

  • 作为一个新用户,我将不得不了解库声明的符号与您用作指标的符号之间的区别。不过,谢谢。
【解决方案3】:

根据我有限的经验: “我是否需要打包我的应用程序才能更改应用程序菜单”?

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

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

【讨论】:

  • 仅在 OSX 上更改菜单名称 — “在 macOS 上,应用程序菜单第一项的标签始终是您的应用程序名称,无论您设置什么标签。要更改它,请修改您的应用程序包的信息.plist 文件。有关详细信息,请参阅关于信息属性列表文件。” — github.com/electron/electron/blob/master/docs/api/menu.md
猜你喜欢
  • 2016-04-22
  • 1970-01-01
  • 2020-02-29
  • 1970-01-01
  • 1970-01-01
  • 2016-12-12
  • 1970-01-01
  • 1970-01-01
  • 2020-04-19
相关资源
最近更新 更多