106
Вы можете использовать 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)
frame: false
сделал это для меня.removeMenu()
Linux и WindowssetMenu
иremoveMenu
не работают ссылкиИспользовать это:
Ссылка: 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 вы можете использовать это:
источник
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 (меню) - Устанавливает меню в качестве строки меню окна, установка значения null приведет к удалению строки меню. ( Это полностью удалит меню )
---- win.setAutoHideMenuBar (hide) - Устанавливает, должна ли строка меню окна автоматически скрываться. После установки строка меню будет
отображаться только тогда, когда пользователи нажимают одну клавишу Alt .
Источник: https://github.com/Automattic/simplenote-electron/issues/293
Существует также способ создания безрамного окна, как показано ниже:
(нет кнопки закрытия, ничего. Может быть, что мы хотим (лучший дизайн))
https://electronjs.org/docs/api/browser-window#winremovemenu-linux-windows
документ: https://electronjs.org/docs/api/frameless-window
Изменить: (новый)
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
Электрон v7 ошибка
Для Electron 7.1.1 используйте
Menu.setApplicationMenu
вместоwin.removeMenu()
согласно этой теме:
https://github.com/electron/electron/issues/16521
И главное примечание: вы должны вызвать его перед созданием BrowserWindow ! Или не пойдет!
ОБНОВЛЕНИЕ (настройка autoHideMenuBar при построении 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
Из документа для варианта:
Вот отрывок, чтобы проиллюстрировать это:
источник
BrowserWindow
конструкторе следующим образом:new BrowserWindow({autoHideMenuBar: true})
. И, кстати, спасибо за этот ответ. Мне кажется, что это, вероятно, самый полный (при условии, что методы все еще существуют и не устарели).Работает нормально без меню в браузере.
источник
Перед этой строкой в main.js:
источник
После ответа на этот вопрос вы должны позвонить,
Menu.setApplicationMenu(null)
прежде чем окно будет созданоисточник
Согласно официальной документации @ https://github.com/electron/electron/blob/v8.0.0-beta.1/docs/api/menu.md правильный способ сделать это сейчас, начиная с 7.1.2, и я тестировал в версии 8.0 он также должен:
источник
В этих решениях есть ошибка. При использовании решений, указанных ниже, окна закрываются с задержкой.
Я использовал решение ниже. Сейчас это лучше.
источник