電子アプリからこのメニューバーを削除するにはどうすればよいですか。
また、「Hello World」と表示されています(これは、ビルド済みのelectronをダウンロードしたため、アプリケーションをパッケージ化すると消えます)。これらをhtmlにコーディングしなかったので、それを取得する方法がわかりません!-
電子アプリからこのメニューバーを削除するにはどうすればよいですか。
また、「Hello World」と表示されています(これは、ビルド済みのelectronをダウンロードしたため、アプリケーションをパッケージ化すると消えます)。これらをhtmlにコーディングしなかったので、それを取得する方法がわかりません!-
回答:
ウィンドウで使用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)
、期待どおりに機能します(@Artiumが言及したように、キーを押してバーを元に戻すことはできませんalt
)。
Electron 7.1.1の場合、これを使用できます。
const {app, BrowserWindow, Menu} = require('electron')
Menu.setApplicationMenu(false)
Menu.setApplicationMenu(null)
で働いていた7.1.2
他の解決策は私のために動作しませんでした!
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.setMenu(null)を使用する代わりに、アプリケーションメニューを削除するwin.removeMenu()を追加しました
これは、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コメント通り!プロパティと多くをコンストラクタに設定できます
これは最新の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ブール値(オプション)-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;
ブラウザのメニューなしで期待どおりに機能します。
この問題の回答に従って、ウィンドウが作成さMenu.setApplicationMenu(null)
れる前に電話する必要があります
公式ドキュメントによると、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);
frame: false
私のためにやった。