2016-06-13 2 views

답변

4

API docs here에는 기본 맞춤형 응용 프로그램 메뉴를 만드는 데 유용한 문서가 있습니다. 다양한 옵션과 기능 및 플랫폼 차이점이 있습니다.

예를 들어, 기본 프로세스 코드에서이 같은 뭔가를 할 수 :

레이블 "필터"를 사용하여 응용 프로그램 수준의 메뉴를 만들 것
const { app, BrowserWindow, Menu } = require('electron'); 
const path = require('path'); 
let mainWindow; 

app.on('ready',() => { 
    mainWindow = new BrowserWindow(); 
    mainWindow.loadURL(path.join('file://', __dirname, 'index.html')); 
    setMainMenu(); 
}); 

function setMainMenu() { 
    const template = [ 
    { 
     label: 'Filter', 
     submenu: [ 
     { 
      label: 'Hello', 
      accelerator: 'Shift+CmdOrCtrl+H', 
      click() { 
       console.log('Oh, hi there!') 
      } 
     } 
     ] 
    } 
    ]; 
    Menu.setApplicationMenu(Menu.buildFromTemplate(template)); 
} 

표시된 단일 메뉴 항목을 표시합니다 열 때 " 여보세요". 그것을 클릭하면 콘솔에 기록됩니다.

electron-prebuilt을 사용하는 경우 항상 왼쪽 상단에 "전자"라고 말합니다. 전자 사전 빌드를 통해 실행되지 않는 독립 실행 형 응용 프로그램으로 응용 프로그램을 컴파일하면 응용 프로그램 이름이 표시됩니다.

@nonhomer가 지적했듯이이 API는 앱 모듈의 준비 이벤트 후에 호출되어야합니다.

일렉트론을 개발할 때 기본 전자 장치 앱이 기본 메뉴를 제공한다고 덧붙여 야합니다 (https://github.com/electron/electron/blob/d26e4a4abf9dfc277974c6c9678a24a5f9e4d104/default_app/main.js#L48 참조). 앱을 패키징하면 그 앱은 존재하지 않습니다.

+0

지금까지,이 예제는 요세미티에 Mac.Electron 1.2에 나를 위해 일한되지 않았습니다

다음은 간단한 예입니다. –

+0

작동하지 않습니다, 당신은 @neonhomer 대답에 그려진 관심을 보여줍니다 : "이 API는 앱 모듈의 준비 이벤트 후에 호출되어야합니다" – vedi

+0

@vedi 감사합니다. 방금 업데이트했습니다. – ccnokes

2

API 문서에있는 작은 노트가있다 : http://electron.atom.io/docs/api/menu/#menusetapplicationmenumenu

:이 API는 응용 프로그램 모듈의 준비 이벤트 후에 호출해야합니다.

재미있는 점은 Windows에서 직접 호출된다는 것입니다. 이

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

const menuTemplate = [...] 
const menu = Menu.buildFromTemplate(menuTemplate) 

let win 

function createWindow() { 
    win = new BrowserWindow({ width: 800, height: 600, }) 

    win.loadURL(`file://${__dirname}/index.html`) 

    win.on('closed',() => { 
     win = null 
    }) 
} 

app.on('ready',() => { 
    Menu.setApplicationMenu(menu) 
    createWindow() 
}) 

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

app.on('activate',() => { 
    if (win === null) { 
     createWindow() 
    } 
}) 
+0

다른 흥미로운 점은 MenuItem이'visible : false' 인 경우 여전히 Windows에서 키보드 단축키로 작동하지만 macOS에서는 작동하지 않는다는 것입니다. – neonhomer

관련 문제