Wie entferne ich diese Menüleiste aus meinen Elektronen-Apps:
Außerdem heißt es "Hallo Welt" (liegt das daran, dass ich vorgefertigte Elektronen heruntergeladen habe und sie verschwinden, sobald ich die Anwendung verpackt habe?). Ich habe diese nicht in den HTML-Code codiert, daher weiß ich nicht, wie ich sie herausholen soll! -
frame: false
habe es für mich getan.removeMenu()
ist nur Linux & WindowssetMenu
undremoveMenu
nicht mehr funktionieren LinkBenutze das:
Referenz: https://github.com/electron/electron/issues/1415
Ich habe es versucht
mainWindow.setMenu(null)
, aber es hat nicht funktioniert.quelle
mainWindow.setMenu(null)
mit Elektron 5.0.2 versucht und es hat auch bei mir nicht funktioniert. Ich bin mir nicht sicher, warum ich Ratschläge sehe, es überall zu verwenden, und bin gewandert, wenn ich der einzige bin, der etwas falsch macht. Ihr Ratschlag zur VerwendungsetMenuBarVisibility
entfernt zwar die Sichtbarkeit der Menüleiste, entfernt sie jedoch nicht vollständig. Es kann durch Drücken derAlt
Taste zurückgebracht werden..setMenu(null)
noch.removeMenu()
für mich gearbeitet..setMenuBarVisibility(false)
Entfernt die Menüleiste und dieAlt
Taste funktioniert nur, wenn sie ausgeführt.setAutoHideMenuBar(true)
wird.setMenu(null)
nicht, abersetMenuBarVisibility(false)
wie erwartet (die Leiste kann nicht durch Drücken deralt
Taste wie bei @Artium erwähnt zurückgesetzt werden).Für Electron 7.1.1 können Sie Folgendes verwenden:
quelle
Menu.setApplicationMenu(null)
gearbeitet in7.1.2
Andere Lösungen haben bei mir nicht funktioniert!Wenn Sie Ihre App verpacken, wird das Standardmenü nicht mehr angezeigt. Wenn Sie dies während der Entwicklung
setMenu(null)
stört, können Sie das von @TonyVincent vorgeschlagene Browserfenster aufrufen.quelle
Ab 7.0.0 funktionieren die meisten der oben genannten Lösungen nicht mehr.
BrowserWindow.setMenu()
wurde ersetzt durchMenu.setApplicationMenu()
, wodurch nun das Menü in allen Fenstern geändert wird.setMenu()
,removeMenu()
nichts mehr tun, die übrigens noch in den Dokumenten erwähnt werden.setAutoHideMenuBar()
funktioniert immer noch, könnte aber ein Ärgernis sein, wenn Sie Alt als Hotkey-Modifikator verwenden möchten. Sobald das Menü sichtbar ist, müssen Sie vom Fenster weg klicken (loser Fokus), um das Menü wieder auszublenden.Wenn Ihre Anwendung mehr als ein Fenster hat, können Sie Menüs nicht für jedes Fenster separat festlegen / entfernen. Die einzige Möglichkeit, ein Menü zu entfernen, besteht in der Verwendung des rahmenlosen Fensteransatzes. Das ist das, was ich in meiner aktuellen Bewerbung möchte, aber nicht in allen Fällen eine gute Lösung.
quelle
Das Menü kann ausgeblendet oder automatisch ausgeblendet werden (wie in Slack oder VS Code - Sie können Alt drücken, um das Menü ein- oder auszublenden ).
Relevante Methoden:
---- win.setMenu (Menü) - Legt das Menü als Menüleiste des Fensters fest. Wenn Sie es auf Null setzen, wird die Menüleiste entfernt. ( Dadurch wird das Menü vollständig entfernt. )
---- win.setAutoHideMenuBar (hide) - Legt fest, ob sich die Fenstermenüleiste automatisch ausblenden soll. Nach der Einstellung der Menüleiste wird nur
zeigen , wenn Benutzer drücken die einzelne Alt - Taste .
Quelle: https://github.com/Automattic/simplenote-electron/issues/293
Es gibt auch die Methode zum Erstellen eines rahmenlosen Fensters, wie unten gezeigt:
(kein Schließen-Knopf, nichts. Kann sein, was wir wollen (besseres Design))
https://electronjs.org/docs/api/browser-window#winremovemenu-linux-windows
doc: https://electronjs.org/docs/api/frameless-window
Bearbeiten: (neu)
https://electronjs.org/docs/api/browser-window#winremovemenu-linux-windows
Win.removeMenu () hinzugefügt, um Anwendungsmenüs zu entfernen, anstatt win.setMenu (null) zu verwenden.
Das wird ab v5 wie folgt hinzugefügt:
https://github.com/electron/electron/pull/16570
https://github.com/electron/electron/pull/16657
Electron v7 Bug
Verwenden Sie für Electron 7.1.1
Menu.setApplicationMenu
anstelle vonwin.removeMenu()
gemäß diesem Thread:
https://github.com/electron/electron/issues/16521
Und der große Hinweis ist: Sie müssen es aufrufen, bevor Sie das BrowserWindow erstellen ! Oder es wird nicht funktionieren!
UPDATE (Festlegen von autoHideMenuBar für die BrowserWindow-Konstruktion)
Wie von @kcpr Kommentar! Wir können die Eigenschaft und viele auf den Konstruktor setzen
Das ist jetzt auf der neuesten stabilen Version von Electron verfügbar, nämlich 8.3!
Aber auch in alten Versionen habe ich nach v1, v2, v3, v4 gesucht!
Es ist in allen Versionen da!
Gemäß diesem Link
https://github.com/electron/electron/blob/1-3-x/docs/api/browser-window.md
Und für die v8.3
https://github.com/electron/electron/blob/v8.3.0/docs/api/browser-window.md#new-browserwindowoptions
Der Dokumentlink
https://www.electronjs.org/docs/api/browser-window#new-browserwindowoptions
Aus dem Dokument für die Option:
Hier ein Ausschnitt zur Veranschaulichung:
quelle
BrowserWindow
Konstruktor automatisch ausgeblendet werden soll, wie folgt :new BrowserWindow({autoHideMenuBar: true})
. Und übrigens, danke für diese Antwort. Es scheint mir wahrscheinlich die vollständigste zu sein (vorausgesetzt, die Methoden existieren noch und sind nicht veraltet).Arbeiten wie erwartet ohne Menü im Browser.
quelle
Nach der Antwort auf dieses Problem müssen Sie anrufen,
Menu.setApplicationMenu(null)
bevor das Fenster erstellt wirdquelle
Vor dieser Zeile bei main.js:
quelle
Laut der offiziellen Dokumentation @ https://github.com/electron/electron/blob/v8.0.0-beta.1/docs/api/menu.md ist der richtige Weg dies jetzt seit 7.1.2 zu tun und ich habe getestet es ist auch auf 8.0 zu:
quelle
Diese Lösungen haben Fehler. Wenn Sie die unten aufgeführten Lösungen verwenden, hat Windows eine Verzögerung beim Schließen.
Ich habe unten eine Lösung verwendet. Das ist jetzt besser.
quelle