Electron托盘图标点击后菜单不显示怎么办?

IT人文君 阅读 16

我在用Electron开发桌面应用,托盘图标能正常显示,但点击后右键菜单没反应。我按照文档写了tray.setContextMenu(menu),也试过在createWindow之后初始化托盘,还是不行。

这是我的托盘创建代码:

const { app, Tray, Menu } = require('electron');
let tray = null;

app.whenReady().then(() => {
  tray = new Tray(path.join(__dirname, 'icon.png'));
  const contextMenu = Menu.buildFromTemplate([
    { label: '退出', click: () => app.quit() }
  ]);
  tray.setContextMenu(contextMenu);
});

难道是图标路径问题?还是生命周期哪里没处理好?

我来解答 赞 1 收藏
二维码
手机扫码查看
1 条解答
❤玉楠
❤玉楠 Lv1
看了下代码,最可能的原因是图标文件问题。Windows上托盘图标必须用.ico格式,png经常不显示或者点击没反应,这是个老坑了。把icon.png换成icon.ico试试。

另外你代码里没引入path模块,记得加上:
const path = require('path');


我之前这样搞的,ico图标尺寸用16x16或32x32,太大也会出问题。还有个坑,tray变量如果被垃圾回收了也会没反应,你已经在全局声明了应该没事。
点赞
2026-02-28 15:14