如何从电子应用程序中删除此菜单栏:
它还说“ Hello World”(这是因为我下载了预先构建的电子,并且在打包应用程序后会消失吗?)。我没有将这些代码编码到html中,所以我不知道如何将其发布!
Answers:
您可以在窗口上使用w.setMenu(null)
或设置frame: false
(这也会删除用于关闭,最小化和最大化选项的按钮)。请参见setMenu()或BrowserWindow()。还要检查这个线程
Electron现在win.removeMenu()
(在v5.0.0中添加了)可以删除应用程序菜单,而不是使用win.setMenu(null)
。
Electron 7.1.x似乎有一个win.removeMenu()
无法正常工作的错误。唯一的解决方法是使用Menu.setApplicationMenu(null)
removeMenu()
仅适用于Linux和Windows
用这个:
mainWindow = new BrowserWindow({width: 640, height: 360})
mainWindow.setMenuBarVisibility(false)
参考:https : //github.com/electron/electron/issues/1415
我尝试过mainWindow.setMenu(null)
,但是没有用。
mainWindow.setMenu(null)
使用电子5.0.2,它也无法正常工作。不知道为什么我建议不要在任何地方使用它,如果我是唯一做错事情的人,那我肯定还在徘徊。您的使用建议setMenuBarVisibility
尽管会删除菜单栏的可见性,但不会完全删除它。可以通过按键将其恢复Alt
。
.setMenu(null)
或.removeMenu()
为我工作。.setMenuBarVisibility(false)
删除菜单栏,该Alt
键仅在.setAutoHideMenuBar(true)
运行时有效。
setMenu(null)
无效,但setMenuBarVisibility(false)
按预期方式工作(不能通过按alt
@Artium所提到的键来调出该栏)。
对于Electron 7.1.1,可以使用以下命令:
const {app, BrowserWindow, Menu} = require('electron')
Menu.setApplicationMenu(false)
Menu.setApplicationMenu(null)
在7.1.2
其他解决方案中不起作用!
打包应用程序时,默认菜单将不再存在,如果这在开发过程中困扰着您,则可以setMenu(null)
按照@TonyVincent的建议在浏览器窗口上调用。
从7.0.0开始,大多数上述解决方案不再起作用。
BrowserWindow.setMenu()
已由替换Menu.setApplicationMenu()
,现在可以更改所有窗口上的菜单。setMenu()
,removeMenu()
不再执行任何操作,而在文档中仍然提到了这一点。
setAutoHideMenuBar()
仍然可以使用,但是如果您打算将Alt用作热键修饰符,可能会很麻烦。菜单可见后,您必须单击远离窗口的位置(松散焦点)以再次隐藏菜单。
如果您的应用程序有多个窗口,则不能在每个窗口上分别设置/删除菜单。删除菜单的唯一方法是使用无框架窗口方法。那恰好是我当前应用程序中想要的,但是在所有情况下都不是一个好的解决方案。
菜单可以隐藏或自动隐藏(例如在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
doc:https://electronjs.org/docs/api/frameless-window
win.removeMenu()
Linux Windows删除窗口的菜单栏。
https://electronjs.org/docs/api/browser-window#winremovemenu-linux-windows
添加了win.removeMenu()来删除应用程序菜单,而不是使用win.setMenu(null)
从v5按照以下方式添加:
https://github.com/electron/electron/pull/16570
https://github.com/electron/electron/pull/16657
对于Electron 7.1.1,请使用Menu.setApplicationMenu
代替win.removeMenu()
按照这个线程:https:
//github.com/electron/electron/issues/16521
最重要的是:必须在创建BrowserWindow之前调用它!否则将无法正常工作!
const {app, BrowserWindow, Menu} = require('electron')
Menu.setApplicationMenu(null);
const browserWindow = new BrowserWindow({/*...*/});
如通过@kcpr评论!我们可以在构造函数上设置属性和许多
到目前为止,最新的电子稳定版本为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
doc链接
https://www.electronjs.org/docs/api/browser-window#new-browserwindowoptions
从文档中获取选项:
autoHideMenuBar布尔值(可选)-除非按下Alt键,否则自动隐藏菜单栏。默认为false。
这里是一个片段来说明它:
let browserWindow = new BrowserWindow({
width: 800,
height: 600,
autoHideMenuBar: true // <<< here
})
BrowserWindow
构造函数中自动隐藏,如下所示:new BrowserWindow({autoHideMenuBar: true})
。另外,谢谢您的回答。在我看来,这可能是最完整的一种方法(假设这些方法仍然存在并且不被弃用)。
@"electron": "^7.1.1" :
mainWindow = new browserWindow({ height: 500, width: 800});
//mainWindow.setAutoHideMenuBar(true);
mainWindow.autoHideMenuBar = true;
在浏览器中没有菜单的情况下可以正常工作。
在main.js的这一行之前:
mainWindow = new BrowserWindow({width: 800, height: 900})
mainWindow.setMenu(null) //this will r menu bar
根据官方文档@ 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)
这些解决方案有错误。当使用下面的解决方案时,Windows会延迟关闭。
Menu.setApplicationMenu(null),
&&
const updateErrorWindow = new BrowserWindow({autoHideMenuBar: true});
我在下面使用了解决方案。现在比较好。
const window= new BrowserWindow({...});
window.setMenuBarVisibility(false);
frame: false
为我做了。