如何从电子应用中删除此菜单栏:
它也说" Hello World"(这是因为我下载了预先构建的电子,一旦打包应用程序就会消失?)。我没有将这些代码编入html,所以我不知道如何解决它! -
答案 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()
答案 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);