Tray 模块是 Electron 中用于创建和管理系统托盘图标的模块。通过使用 Tray 模块,你可以在操作系统的系统托盘中添加应用程序的图标,并定义图标的上下文菜单以及与图标相关的行为。

以下是一个简单的例子,演示如何使用 Tray 模块创建一个系统托盘图标:
const { app, Tray, Menu } = require('electron');
const path = require('path');

let tray = null;

app.whenReady().then(() => {
  // 创建一个系统托盘图标
  tray = new Tray(path.join(__dirname, 'icon.png'));

  // 创建上下文菜单
  const contextMenu = Menu.buildFromTemplate([
    { label: 'Item 1', type: 'normal', click: () => console.log('Item 1 clicked') },
    { label: 'Item 2', type: 'normal', click: () => console.log('Item 2 clicked') },
    { type: 'separator' },
    { label: 'Quit', type: 'normal', click: () => app.quit() }
  ]);

  // 设置托盘图标的上下文菜单
  tray.setContextMenu(contextMenu);

  // 设置托盘图标的提示文本
  tray.setToolTip('My Electron App');
});

app.on('window-all-closed', () => {
  // 在 macOS 中,关闭所有窗口时隐藏 Dock 图标,而不是退出应用
  if (process.platform !== 'darwin') {
    app.quit();
  }
});

在这个例子中,我们首先使用 new Tray(path.join(__dirname, 'icon.png')) 创建了一个系统托盘图标,并指定了图标的路径。然后,我们使用 Menu.buildFromTemplate 创建了一个上下文菜单,定义了菜单项的标签、类型(normal 表示普通菜单项,separator 表示分隔线)以及点击菜单项时的回调函数。最后,通过 tray.setContextMenu(contextMenu) 将上下文菜单设置给托盘图标。

此外,我们使用 tray.setToolTip('My Electron App') 设置了托盘图标的提示文本。

在应用程序准备就绪后(app.whenReady().then()),我们创建并设置系统托盘图标。在 macOS 中,当所有窗口关闭时,我们通过监听 window-all-closed 事件来隐藏 Dock 图标而不是退出应用,因为在 macOS 中,应用程序通常在所有窗口关闭时保持运行。

请注意,图标文件(icon.png)的路径应该是正确的,它通常是相对于主进程文件的路径。根据你的应用程序的目录结构,你可能需要调整图标文件的路径。


转载请注明出处:http://www.zyzy.cn/article/detail/10929/Electron