从Electron应用程序中删除菜单栏

时间:2016-08-23 03:41:30

标签: node.js electron

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

menu-bar

它也说" Hello World"(这是因为我下载了预先构建的电子,一旦打包应用程序就会消失?)。我没有将这些代码编入html,所以我不知道如何解决它! -

16 个答案:

答案 0 :(得分:70)

您可以在窗口中使用w.setMenu(null)或设置frame: false(这也会删除关闭,最小化和最大化选项的按钮)。请参阅setMenu()BrowserWindow()。另请查看此thread

答案 1 :(得分:22)

使用此:

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

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

我尝试了mainWindow.setMenu(null),但是没有用。

答案 2 :(得分:11)

对于Electron 7.1.1,您可以使用以下方法:

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

答案 3 :(得分:8)

从7.0.0版本开始,上述大多数解决方案不再起作用。 BrowserWindow.setMenu()已由Menu.setApplicationMenu()取代,setMenu()现在会更改所有窗口上的菜单。 removeMenu()setAutoHideMenuBar()不再执行任何操作,顺便说一下在文档中仍然提到。

{{1}}仍然有效,但是如果您打算将Alt用作热键修饰符,可能会很麻烦。菜单可见后,您必须单击窗口以外的位置(松散焦点)以再次隐藏菜单。

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

答案 4 :(得分:6)

当您打包应用程序时,默认菜单将不再存在,如果这在开发过程中困扰您,那么您可以按照@TonyVincent的建议在浏览器窗口上调用public static class AudioManager { public const string BACKGROUND = "BACKGROUND.mp3"; private static readonly MediaPlayer BackgroundSound = new MediaPlayer(); public static void StartSoundManager() { BackgroundSound.Source = MediaSource.CreateFromUri(new Uri($"ms-appx:///Assets/Audio/{BACKGROUND}")); BackgroundSound.IsLoopingEnabled = true; ToggleSounds(); BackgroundSound.Play(); } public static void ToggleSounds() { BackgroundSound.IsMuted = !Settings.IsAudioOn; // IsAudioOn is false, still the sound plays } }

答案 5 :(得分:5)

Electron 12.0.6

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

答案 6 :(得分:4)

菜单可以隐藏自动隐藏(例如 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()

doc:https://electronjs.org/docs/api/frameless-window

答案 7 :(得分:4)

这些解决方案存在错误。 当使用下面的解决方案时,Windows会延迟关闭。

url.href

我在下面使用了解决方案。现在比较好。

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

答案 8 :(得分:3)

@"electron": "^7.1.1" : 

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

无需浏览器中的菜单即可正常工作。

答案 9 :(得分:3)

按照this issue的回答,您必须在创建窗口之前调用Menu.setApplicationMenu(null)

答案 10 :(得分:2)

在创建browserWindow时将autoHideMenuBar设置为true

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

答案 11 :(得分:1)

在main.js的这一行之前:

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

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

答案 12 :(得分:1)

2020年更新,对我有用的唯一糟糕的事情:

Menu.setApplicationMenu(new Menu());

答案 13 :(得分:1)

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

答案 14 :(得分:0)

根据官方文档@ 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)

答案 15 :(得分:0)

setMenu(null);是最好的答案,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);