[node.js] Electron 앱에서 메뉴 바 제거

전자 앱에서이 메뉴 바를 제거하는 방법 :

메뉴 바

또한 “Hello World”라고 표시되어 있습니다 (이는 사전 빌드 된 전자를 다운로드했기 때문에 응용 프로그램을 패키징하면 사라질까 요?). 나는 이것을 html로 코딩하지 않았기 때문에 그것을 얻는 방법을 모릅니다!-



답변

창에서 사용 w.setMenu(null)하거나 설정할 수 있습니다 frame: false(이렇게하면 닫기, 최소화 및 최대화 옵션에 대한 버튼도 제거됨). setMenu () 또는 BrowserWindow ()를 참조하십시오 . 이 스레드 도 확인하십시오.


Electron은 이제 win.removeMenu()( v5.0.0에 추가됨 ) win.setMenu(null).


Electron 7.1.x는 win.removeMenu()작동하지 않는 버그가있는 것 같습니다 . 유일한 해결 방법은Menu.setApplicationMenu(null)


답변

이것을 사용하십시오 :

mainWindow = new BrowserWindow({width: 640, height: 360})
mainWindow.setMenuBarVisibility(false)

참조 : https://github.com/electron/electron/issues/1415

시도 mainWindow.setMenu(null)했지만 작동하지 않았습니다.


답변

Electron 7.1.1의 경우 다음을 사용할 수 있습니다.

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


답변

앱을 패키징 할 때 기본 메뉴가 더 이상 존재하지 않습니다. 개발 중에 문제가 발생하면 setMenu(null)@TonyVincent가 제안한대로 브라우저 창에서 호출 할 수 있습니다 .


답변

7.0.0부터는 위의 대부분의 솔루션이 더 이상 작동하지 않습니다.
BrowserWindow.setMenu()는로 대체되어 Menu.setApplicationMenu()이제 모든 창의 메뉴를 변경합니다. setMenu(), removeMenu()더 이상 아무것도하지 않습니다. 그건 그렇고 여전히 문서에 언급되어 있습니다.

setAutoHideMenuBar()여전히 작동하지만 Alt를 핫키 수정 자로 사용하려는 경우 불편할 수 있습니다. 메뉴가 표시되면 메뉴를 다시 숨기려면 창 밖을 클릭해야합니다 (약간 초점).

응용 프로그램에 창이 두 개 이상있는 경우 각 창에서 메뉴를 별도로 설정 / 제거 할 수 없습니다. 메뉴를 제거하는 유일한 방법은 프레임없는 창 접근 방식을 사용하는 것입니다. 그것은 내가 현재 응용 프로그램에서 원하는 것이지만 모든 경우에 좋은 솔루션은 아닙니다.


답변

메뉴를 숨길 수 있습니다 또는 자동 숨김 (처럼 여유VS 코드 – 당신이 할 수 있습니다 보여 Alt 키를 눌러 / 숨기기 메뉴).

관련 방법 :

—- win.setMenu (menu) -메뉴를 창의 메뉴 모음으로 설정하고 null로 설정하면 메뉴 모음이 제거됩니다. ( 이렇게하면 메뉴가 완전히 제거됩니다. )

mainWindow.setMenu(null)

—- win.setAutoHideMenuBar (hide) -창 메뉴 바를 자동으로 숨길 지 여부를 설정합니다. 일단 설정 되면 메뉴 표시 줄
사용자 가 단일 Alt 키를 누를 때만
표시
됩니다 .

mainWindow.setAutoHideMenuBar(true)

출처 : https://github.com/Automattic/simplenote-electron/issues/293

다음과 같이 프레임없는 창을 만드는 방법도 있습니다.

(닫기 버튼 없음. 우리가 원하는 것이 될 수 있음 (더 나은 디자인))

const { BrowserWindow } = require('electron')
let win = new BrowserWindow({ width: 800, height: 600, frame: false })
win.show()

https://electronjs.org/docs/api/browser-window#winremovemenu-linux-windows

문서 : https://electronjs.org/docs/api/frameless-window

편집 : (신규)

win.removeMenu() Linux Windows 창의 메뉴 표시 줄을 제거합니다.

https://electronjs.org/docs/api/browser-window#winremovemenu-linux-windows

win.setMenu (null)를 사용하는 대신 응용 프로그램 메뉴를 제거하기 위해 win.removeMenu ()를 추가했습니다.

다음과 같이 v5에서 추가되었습니다.

https://github.com/electron/electron/pull/16570

https://github.com/electron/electron/pull/16657

Electron v7 버그

전자 7.1.1에 사용하는 Menu.setApplicationMenu대신win.removeMenu()

이 스레드에 따라 :
https://github.com/electron/electron/issues/16521

그리고 중요한 점은 BrowserWindow를 만들기 전에 호출해야 한다는 것입니다 ! 아니면 작동하지 않습니다!

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

Menu.setApplicationMenu(null);

const browserWindow = new BrowserWindow({/*...*/});

UPDATE (BrowserWindow 생성시 autoHideMenuBar 설정)

@kcpr 코멘트로! 생성자에 속성과 많은 것을 설정할 수 있습니다.

현재 8.3 버전 인 전자의 최신 안정 버전에서 사용할 수 있습니다!
그러나 이전 버전에서도 v1, v2, v3, v4를 확인했습니다!
모든 버전에 있습니다!

이 링크에 따라
https://github.com/electron/electron/blob/1-3-x/docs/api/browser-window.md

그리고 v8.3의 경우
https://github.com/electron/electron/blob/v8.3.0/docs/api/browser-window.md#new-browserwindowoptions

문서 링크
https://www.electronjs.org/docs/api/browser-window#new-browserwindowoptions

옵션 문서에서 :

autoHideMenuBar Boolean (선택 사항)-Alt 키를 누르지 않는 한 메뉴 모음을 자동으로 숨 깁니다. 기본값은 거짓입니다.

다음은이를 설명하는 스 니펫입니다.


let browserWindow = new BrowserWindow({
    width: 800,
    height: 600,
    autoHideMenuBar: true // <<< here
})


답변

@"electron": "^7.1.1" :

mainWindow = new browserWindow({ height: 500, width: 800});
//mainWindow.setAutoHideMenuBar(true);
mainWindow.autoHideMenuBar = true;

브라우저의 메뉴없이 예상대로 작동합니다.