如何从电子应用程序中删除此菜单栏:

它还说“Hello World”(这是因为我下载了电子预构建,一旦我打包应用程序就会消失吗?)我没有编码这些到html,所以我不知道如何得到它!-


你可以在你的窗口上使用w.setMenu(null)或set frame: false(这也会删除关闭、最小化和最大化选项的按钮)。参见setMenu()或BrowserWindow()。还要检查这个线程


Electron现在有win.removeMenu()(在v5.0.0中添加),以删除应用程序菜单,而不是使用win.setMenu(null)。


7.1电子。x似乎有一个错误,win.removeMenu()不工作。唯一的解决方法是使用menu . setapplicationmenu (null),然而,这将禁用所有菜单快捷方式,如F11切换全屏等。


在新版本的Electron中,您可以在创建browserWindow时设置autoHideMenuBar: true,按Alt将再次显示菜单栏。

const mainWindow = new BrowserWindow({
  autoHideMenuBar: true,
})

当你打包你的应用程序时,默认菜单将不再存在,如果这在开发过程中让你感到困扰,那么你可以像@TonyVincent建议的那样在浏览器窗口上调用setMenu(null)。


在main.js的这一行之前:

mainWindow = new BrowserWindow({width: 800, height: 900})

mainWindow.setMenu(null) //this will r menu bar

菜单可以隐藏或自动隐藏(就像在Slack或VS Code -你可以按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. removmenu () Linux Windows删除窗口的菜单栏。

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

增加了win. removmenu()来删除应用程序菜单,而不是使用win.setMenu(null)

这是从v5中添加的,如下所示:

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

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

电子v7 bug

对于电子7.1.1使用菜单。setApplicationMenu而不是win. removmenu ()

按照这个线程: https://github.com/electron/electron/issues/16521

最重要的是:你必须在创建BrowserWindow之前调用它!否则行不通!

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

Menu.setApplicationMenu(null);

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

更新(在BrowserWindow构造上设置autoHideMenuBar)

由@kcpr评论!我们可以在构造函数中设置属性和许多属性

到目前为止,最新的稳定版本electron是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键。默认为false。

这里有一个片段来说明它:


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

用这个:

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

参考:https://github.com/electron/electron/issues/1415

我尝试了mainWindow.setMenu(null),但它不起作用。


从7.0.0开始,上面的大多数解决方案不再工作。 BrowserWindow.setMenu()已经被menu . setapplicationmenu()所取代,它现在会改变所有窗口的菜单。setMenu(), removmenu()不再做任何事情,顺便说一下,它们仍然在文档中被提到。

setAutoHideMenuBar()仍然有效,但如果你计划使用Alt作为热键修饰符,可能是一个麻烦。一旦菜单是可见的,你必须点击离开窗口(散焦点)隐藏菜单再次。

如果应用程序有多个窗口,则不能在每个窗口上分别设置/删除菜单。删除菜单的唯一方法是使用无框架窗口方法。这恰好是我在当前应用程序中想要的,但并不是在所有情况下都是一个好的解决方案。


@"electron": "^7.1.1" : 

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

在浏览器中没有菜单的情况下正常工作。


根据这个问题的答案,你必须在创建窗口之前调用Menu.setApplicationMenu(null)


对于电子7.1.1,您可以使用这个:

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

根据官方文档@ https://github.com/electron/electron/blob/v8.0.0-beta.1/docs/api/menu.md,从7.1.2开始正确的方法是这样做的,我已经在8.0上测试过了:

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

Menu.setApplicationMenu(null)

这些解决方案有缺陷。 当使用以下溶液时,窗口在关闭时有延迟。

Menu.setApplicationMenu(null),
&&
const updateErrorWindow = new BrowserWindow({autoHideMenuBar: true});

我使用的溶液在下面。现在这样比较好。

const window= new BrowserWindow({...});
window.setMenuBarVisibility(false);


2020年更新,唯一对我有用的该死的事情:

Menu.setApplicationMenu(new Menu());

setMenu(空);是不是autohidemenu的最佳答案会在应用程序启动时显示


    function createWindow(){
        const win = new BrowserWindow({
            width: 1500,
            height: 800,
            webPreferences:{
                nodeIntergration: true
            }
        });
        win.setMenu(null);
    win.loadFile("index.html");
    }
    app.whenReady().then(createWindow);

在创建browserWindow时设置autoHideMenuBar为true

mainWindow = new BrowserWindow({
    autoHideMenuBar: true,
    width: 1200,
    height: 800
})

这里的大多数答案对于新版本无效。对于9.0或更高版本,Menu.setApplicationMenu(null);应该工作。顺便说一下,Menu从electron package导出:const {Menu} = require('electron');


电子12.0.6:

    let mainWindow = new BrowserWindow({
        autoHideMenuBar: true
    });

即使autoHideMenuBar: true,你仍然可以用Alt键切换菜单栏。

所以要完全隐藏它,使用mainwindow。setmenu (null)