如何与托盘菜单上的Electron单选按钮交互?

时间:2018-08-22 14:28:48

标签: electron

我正在使用Electron,并且正在为我的应用程序创建一个托盘图标。 Electron自己的文档(https://electronjs.org/docs/api/tray#tray-popupcontextmenu-position-os-x-windows)显示,我可以在菜单上使用以下代码选择单选按钮:

  const {app, Menu, Tray} = require('electron')

  let tray = null
  app.on('ready', () => {
    tray = new Tray('/path/to/my/icon')
    const contextMenu = Menu.buildFromTemplate([
      {label: 'Item1', type: 'radio'},
      {label: 'Item2', type: 'radio'},
      {label: 'Item3', type: 'radio', checked: true},
      {label: 'Item4', type: 'radio'}
    ])
    tray.setToolTip('This is my application.')
    tray.setContextMenu(contextMenu)
  })

这将创建按钮,但是我在文档的任何地方都找不到如何获取事件以及如何从这些按钮读取数据的信息。怎么样?

1 个答案:

答案 0 :(得分:1)

Menu.buildFromTemplate时,您实际上定义了MenuItem个对象。

具有签名click(menuItem, browserWindow, event)的click回调使您几乎可以从包含的BrowserWindow中访问任何内容

例如

  const handleClick = (menuItem, browserWindow, event) => {
    // ...
  }
  const contextMenu = Menu.buildFromTemplate([
    {label: 'Item1', type: 'radio', click: handleClick},
    {label: 'Item2', type: 'radio', click: handleClick},
    {label: 'Item3', type: 'radio', click: handleClick, checked: true},
    {label: 'Item4', type: 'radio', click: handleClick}
  ])