изменить собственное меню в приложении electron
приложение electron открыто с тем же меню по умолчанию, которое появляется в приложении electron-quick-start example, и я не знаю, как его изменить.
я также попробовал пример меню в docs но ничего не изменится.
когда я скрываю меню с mainWindow.setMenu(null);
меню исчезло, но я все еще не могу ввести новое меню
какие идеи?
платформа: windows 7
electron ver: 0.36.4
ref файлы:
пакета.в JSON:
{
"name": "electric_timer",
"version": "0.1.0",
"description": "a Time sheet & project managment",
"main": "app.js",
"scripts": {
"test": "echo "Error: no test specified" && exit 1"
},
"repository": {
"type": "git",
"url": "none"
},
"author": "Eyal Ron",
"license": "MIT"
}
app.js:
var app = require('app');
var BrowserWindow = require('browser-window');
app.on('ready', function (){
var mainWindow = new BrowserWindow({
width: 800,
height: 600
});
mainWindow.setMenu(null);
mainWindow.loadUrl('file://' + __dirname + '/main.html');
});
main.js:
var remote = require('remote');
var Menu = remote.require('menu');
var menu = Menu.buildFromTemplate([
{
label: 'Electron',
submenu: [
{
label: 'Prefs',
click: function(){
alert('hello menu');
}
}
]
}
]);
Menu.setApplicationMenu(menu);
main.HTML-код:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>electron test</title>
</head>
<body>
<h1>hello world</h1>
<script>requier('./main.js')</script>
</body>
</html>
2 ответов
электрона 'default_app' наборы меню; Если вы хотите избежать этого, Вам нужно Electron, чтобы запустить приложение непосредственно не через приложение по умолчанию (Примечание: Если вы запустите приложение с чем-то вроде electron .
вы фактически запускаете приложение по умолчанию).
Электрон смотрит в свою папку ресурсов для "app", " app.asar " или "default_app", поэтому, чтобы запустить приложение напрямую, вам нужно скопировать или связать его с ресурсом Electron папка.
независимо от того, как вы запускаете приложение, вы можете настроить меню с помощью меню.setApplicationMenu -- вы можете сделать это в основном процессе, вам не нужно делать это в визуализаторе, как в вашем примере. Кстати, есть опечатка в вашем основном.html (requier вместо require), поэтому, если это ваш фактический код, он будет указывать, что ваш основной.js вообще не работает.
положить вашу логику в меню в код app ('ready') обратный вызов события. Дайте попробовать следующий пример кода
const {app, BrowserWindow, Menu} = require('electron');
let mainWindow;
let menuTemplate = [
{
label: "Window Manager",
submenu: [
{ label: "create New" }
]
},
{
label : "View",
submenu : [
{ role : "reload" },
{ label : "custom reload" }
]
}
];
function appInit () {
// Create the browser window.
mainWindow = new BrowserWindow({width: 800, height: 600})
// and load the main.html of the app.
mainWindow.loadFile('main.html')
let menu = Menu.buildFromTemplate(menuTemplate);
Menu.setApplicationMenu(menu);
}
app.on('ready', () => {
appInit();
})