Как удалить строку меню из определенного окна в электронном? - PullRequest
1 голос
/ 21 июня 2019

В моем приложении есть меню, которое, когда вы щелкаете по свойствам документа, появляется другое окно, но меню приложения также наследуется этим окном, так что вы можете открыть окно свойств документа из окна свойств документа.Я просто хочу отключить меню для окна свойств документа, единственный способ, которым я смог добиться этого, - сделать окно без рамки, но я все еще хочу, чтобы строка заголовка отображалась, так что это не решение, которое я ищудля.

Я пытался использовать docProps.removeMenu (), docProps.setMenu (null) и даже docProps.setApplicationMenu (null).Я переместил его, попытался сделать docProps глобальной переменной, ничего не помогло.

Это мой код:

//Create references for modules that require electron
const { app, BrowserWindow, Menu } = require('electron')

//Create a global reference for the main window
let mainWindow

function createWindow () {
  //Create the browser window
  mainWindow = new BrowserWindow({
    minWidth: 300,
    minHeight: 300,
    backgroundColor: '#888888'
  })

  //Load the index.html file
  mainWindow.loadFile('index.html')

  //Reload the main window on resize
  mainWindow.on('resize', function () {
    mainWindow.reload()
  })
}

function createAppMenu () {
  //Create application menu template
  const template = [
    {
      label: 'File',
      submenu: [
        {
          label: 'Document Properties...',
          click: function () {
            docProps = new BrowserWindow({
              width: 250,
              height: 300,
              resizable: false,
              title: 'Document Properties'
            })
            //This isn't working and I'm not sure why
            docProps.removeMenu()
          }
        }
      ]
    },
    {
      label: 'Edit'
    },
    {
      label: 'View'
    },
    {
      label: 'Window'
    },
    {
      label: 'Help'
    }
  ]

  //Build app menu from template
  const menu = Menu.buildFromTemplate(template)
  Menu.setApplicationMenu(menu)
}

//Call the createWindow function once electron has finished initializing
app.on('ready', function () {
  createWindow()
  mainWindow.maximize()
  createAppMenu()
})

Вы можете увидеть весь проект на https://github.com/Leglaine/ElectroText

Единственное сообщение об ошибке, которое я получаю, - это когда я пытаюсь вызвать docProps.setApplicationMenu (null), оно говорит, что setApplicationMenu не может быть вызвано на docProps, но я действительно не ожидал, что это сработает в любом случае.Заранее спасибо за помощь!

1 Ответ

0 голосов
/ 21 июня 2019

win.removeMenu() и win.setMenu(null) в настоящий момент не работают в Electron, если вы уже установили меню приложения с помощью Menu.setApplicationMenu()

Попробуйте установить пустое меню, подобное этому

docProps.setMenu(Menu.buildFromTemplate([]))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...