105
Możesz użyć w.setMenu(null)
lub ustawić frame: false
(usuwa to również przyciski zamykania, minimalizowania i maksymalizowania opcji) w oknie. Zobacz setMenu () lub BrowserWindow () . Sprawdź również ten wątek
Electron ma teraz win.removeMenu()
( dodany w wersji 5.0.0 ), aby usunąć menu aplikacji zamiast używać win.setMenu(null)
.
Wygląda na to, że Electron 7.1.x ma błąd, win.removeMenu()
który nie działa. Jedynym obejściem jest użycieMenu.setApplicationMenu(null)
frame: false
zrobił to dla mnie.removeMenu()
to tylko Linux i WindowssetMenu
iremoveMenu
nie działaUżyj tego:
Źródła: https://github.com/electron/electron/issues/1415
Próbowałem
mainWindow.setMenu(null)
, ale to nie zadziałało.źródło
mainWindow.setMenu(null)
z elektronem 5.0.2 i to też mi się nie udało. Nie jestem pewien, dlaczego widzę, że radzę używać go wszędzie i błąkałem się, jeśli jestem jedyną osobą, która robi coś nieprawidłowo. Twoja rada dotycząca używaniasetMenuBarVisibility
, choć usuwa widoczność paska menu, nie usuwa go całkowicie. Można go przywrócić, naciskającAlt
klawisz..setMenu(null)
czy.removeMenu()
pracował dla mnie..setMenuBarVisibility(false)
usuwa pasek menu, aAlt
klawisz działa tylko wtedy, gdy.setAutoHideMenuBar(true)
jest uruchomiony.setMenu(null)
nie działało, alesetMenuBarVisibility(false)
działa zgodnie z oczekiwaniami (paska nie można przywrócić przez naciśnięciealt
klawisza, jak wspomniano w @Artium).W przypadku Electron 7.1.1 możesz użyć tego:
źródło
Menu.setApplicationMenu(null)
działał w7.1.2
innych rozwiązaniach nie działa dla mnie!Kiedy spakujesz swoją aplikację, domyślne menu nie będzie już dostępne, jeśli przeszkadza ci to podczas programowania, możesz wywołać
setMenu(null)
okno przeglądarki zgodnie z sugestią @TonyVincent.źródło
Od wersji 7.0.0 większość powyższych rozwiązań już nie działa.
BrowserWindow.setMenu()
został zastąpiony przezMenu.setApplicationMenu()
, który teraz zmienia menu we wszystkich oknach.setMenu()
,removeMenu()
już nic nie rób, o czym nawiasem mówiąc nadal wspomina się w dokumentacji.setAutoHideMenuBar()
nadal działa, ale może być uciążliwy, jeśli planujesz użyć Alt jako modyfikatora skrótu. Gdy menu jest widoczne, musisz kliknąć poza oknem (stracić ostrość), aby ponownie je ukryć.Jeśli twoja aplikacja ma więcej niż jedno okno, nie możesz ustawiać / usuwać menu oddzielnie w każdym oknie. Jedynym sposobem usunięcia menu jest użycie bezramkowego podejścia do okna. Tak się składa, że właśnie tego chcę w mojej obecnej aplikacji, ale nie we wszystkich przypadkach jest to dobre rozwiązanie.
źródło
Menu może być ukryte lub automatycznie ukryte (jak w Slack lub VS Code - możesz nacisnąć Alt, aby wyświetlić / ukryć menu).
Odpowiednie metody:
---- win.setMenu (menu) - Ustawia menu jako pasek menu okna, ustawienie go na null usunie pasek menu. ( Spowoduje to całkowite usunięcie menu )
---- win.setAutoHideMenuBar (hide) - Ustawia, czy pasek menu okna ma się ukrywać automatycznie. Po ustawieniu pasek menu będzie
wyświetlany tylko wtedy, gdy użytkownicy naciśną pojedynczy klawisz Alt .
Źródło: https://github.com/Automattic/simplenote-electron/issues/293
Istnieje również metoda tworzenia okna bezramowego, jak pokazano poniżej:
(bez przycisku zamykania nic. Może być tym, czego chcemy (lepszy projekt))
https://electronjs.org/docs/api/browser-window#winremovemenu-linux-windows
doc: https://electronjs.org/docs/api/frameless-window
Edycja: (nowe)
https://electronjs.org/docs/api/browser-window#winremovemenu-linux-windows
Dodano win.removeMenu () do usuwania menu aplikacji zamiast używania win.setMenu (null)
To jest dodawane od wersji 5 zgodnie z:
https://github.com/electron/electron/pull/16570
https://github.com/electron/electron/pull/16657
Błąd Electron v7
W przypadku Electron 7.1.1 użyj
Menu.setApplicationMenu
zamiastwin.removeMenu()
zgodnie z tym wątkiem:
https://github.com/electron/electron/issues/16521
I ważna uwaga: musisz to wywołać przed utworzeniem BrowserWindow ! Albo to nie zadziała!
UPDATE (Ustawianie autoHideMenuBar w konstrukcji BrowserWindow)
Zgodnie z komentarzem @kcpr! Możemy ustawić tę właściwość i wiele w konstruktorze
To jest już dostępne w najnowszej stabilnej wersji electron, która jest teraz 8.3!
Ale także w starszych wersjach sprawdziłem v1, v2, v3, v4!
Jest we wszystkich wersjach!
Zgodnie z tym linkiem
https://github.com/electron/electron/blob/1-3-x/docs/api/browser-window.md
Oraz w wersji 8.3
https://github.com/electron/electron/blob/v8.3.0/docs/api/browser-window.md#new-browserwindowoptions
Link do dokumentu
https://www.electronjs.org/docs/api/browser-window#new-browserwindowoptions
Z dokumentu dotyczącego opcji:
Oto fragment ilustrujący to:
źródło
BrowserWindow
konstruktorze tak:new BrowserWindow({autoHideMenuBar: true})
. A tak przy okazji, dziękuję Ci za tę odpowiedź. Wydaje mi się, że jest to prawdopodobnie najbardziej kompletny (zakładając, że metody nadal istnieją i nie są przestarzałe).Działa zgodnie z oczekiwaniami bez menu w przeglądarce.
źródło
Przed tą linią w main.js:
źródło
Zgodnie z odpowiedzią z tego problemu , musisz zadzwonić
Menu.setApplicationMenu(null)
przed utworzeniem oknaźródło
Zgodnie z oficjalną dokumentacją @ https://github.com/electron/electron/blob/v8.0.0-beta.1/docs/api/menu.md właściwy sposób to zrobić teraz od 7.1.2 i przetestowałem w wersji 8.0 również:
źródło
Te rozwiązania mają błąd. W przypadku zastosowania poniższych rozwiązań okna mają opóźnienie przy zamykaniu.
Zastosowałem rozwiązanie poniżej. Na razie jest lepiej.
źródło