electron 菜单栏_如何在Electron JS中添加任务栏图标菜单?

electron 菜单栏

If you are new here, please consider checking out my recent articles on Electron JS including Tray Icons.

如果您是新来的,请考虑查看我最近关于Electron JS的文章, 包括托盘图标 。

In this tutorial, we will set up 2 menu items for a tray icon which when a user right-clicks, the menu appears just like the image below.

在本教程中,我们将为托盘图标设置2个菜单项,当用户右键单击时,菜单如下图所示。

Electron JS | Add tray icon menu (1)

Adding a menu to a system tray icon is the functionality of a tray method known as the tray.setContextMenu(), where the parameter is simply a variable or constant of the menu items passed in Menu.buildFromTemplates([]).

将菜单添加到系统任务栏图标是称为tray.setContextMenu()的任务栏方法的功能,其中参数只是在Menu.buildFromTemplates([])中传递的菜单项的变量或常量。

In this exercise,

在本练习中,

  1. I will create a tray icon first,

    我将首先创建一个任务栏图标,

  2. Create a constant which holds the menu items in an array,

    创建一个常数,将菜单项保存在一个数组中,

  3. And finally, pass it as a parameter to the tray method setContextMenu().

    最后,将其作为参数传递给任务栏方法setContextMenu() 。

We are also going to use the path module which is a Node.Js built-in module to locate the source of our tray icon image and the menu module where the method Menu.buildFromTemplates([]) is derived from.

我们还将使用path模块(它是Node.Js的内置模块)来定位托盘图标图像的源以及菜单模块,该菜单模块是方法Menu.buildFromTemplates([])的来源。

Finally, let us write some code: Open your main JavaScript file and type,

最后,让我们编写一些代码:打开您的主JavaScript文件并键入,

//system tray icon menu//
const electron = require ('electron')  // imports electron
const path = require ('path') // imports path module
const {app, Menu, Tray} = electron // imports menu and tray modules
const BrowserWindow = electron.BrowserWindow //enables UI
let mainWindow;
let tray
app.on('ready', _ => {
tray = new Tray (path.join ('src', 'Tray.PNG' ) ) // sets tray icon image
const contextMenu = Menu.buildFromTemplate([   // define menu items
{
label: 'Help',
click: () => console.log ('Help') // click event
},
{
label: 'System',
click: () => console.log ('System')
}
])
tray.setContextMenu(contextMenu)
mainWindow = new BrowserWindow({ // sets browser window dimensions
height : 600,
width : 600,
})
})

Finally, run your code and enjoy the output.

最后,运行您的代码并享受输出。

Electron JS | Add tray icon menu (2)

Output:

输出:

Electron JS | Add tray icon menu (3)

Hey! The browser window displays too... I just did not take a screenshot because it is blank.

嘿! 浏览器窗口也显示...我只是没有截图,因为它是空白的。

Thanks for reading.

谢谢阅读。

Drop your comments if in need of help.

如果需要帮助,请删除您的评论。

翻译自: https://www.includehelp.com/electron-js/add-tray-icon-menu-in-electron-js.aspx

electron 菜单栏

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/544431.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【逆强化学习-0】Introduction

文章目录专栏传送门0.引言1.逆强化学习发展历程2.需要准备的专栏传送门 0.简介 1.学徒学习 2.最大熵学习 0.引言 \qquad相比于深度学习,国内强化学习的教程并不是特别多,而相比强化学习,逆强化学习的教程可谓是少之又少。而本人想将整理到的资…

不知道Mysql排序的特性,加班到12点,认了认了!

小弟新写了一个功能,自测和测试环境测试都没问题,但在生产环境会出现偶发问题。于是,加班到12点一直排查问题,终于定位了的问题原因:Mysql Limit查询优化导致。现抽象出问题模型及解决方案,分析给大家&…

js中==与===的区别

2019独角兽企业重金招聘Python工程师标准>>> 1、对于string,number等基础类型,和是有区别的 1)不同类型间比较,之比较“转化成同一类型后的值”看“值”是否相等,如果类型不同,其结果就是不等 2&#xff09…

【逆强化学习-1】学徒学习(Apprenticeship Learning)

文章目录0.引言1.算法原理2.仿真环境3.运行4.补充(学徒学习深度Q网络)本文为逆强化学习系列第1篇,没有看过逆强化学习介绍的那篇的朋友,可以看一下:Inverse Reinforcement Learning-Introduction 传送门 0.引言 \qquad…

面试官:HashMap有几种遍历方法?推荐使用哪种?

作者 | 磊哥来源 | Java面试真题解析(ID:aimianshi666)转载请联系授权(微信ID:GG_Stone)HashMap 的遍历方法有很多种,不同的 JDK 版本有不同的写法,其中 JDK 8 就提供了 3 种 HashMa…

【逆强化学习-2】最大熵学习(Maximum Entropy Learning)

文章目录0.引言1.算法原理2.仿真0.引言 \qquad本文是逆强化学习系列的第2篇,其余博客传送门如下: 逆强化学习0-Introduction 逆强化学习1-学徒学习 \qquad最大熵学习是2008年出现的方法,原论文(链接见【逆强化学习0】的博客&#…

面试官又整新活,居然问我for循环用i++和++i哪个效率高?

前几天,一个小伙伴告诉我,他在面试的时候被面试官问了这么一个问题:在for循环中,到底应该用 i 还是 i ?听到这,我感觉这面试官确实有点不按套路出牌了,放着好好的八股文不问,净整些幺…

面试官:如何实现 List 集合去重?

作者 | 磊哥来源 | Java面试真题解析(ID:aimianshi666)转载请联系授权(微信ID:GG_Stone)本文已收录《Java常见面试题》系列,开源地址:https://gitee.com/mydb/interviewList 去重指的…

Windows重装Anaconda3失败解决方案【重装失败10来次首次成功的案例!】

文章目录0.环境1.原因2.解决方案0.环境 Win10 Anaconda3 2018版 python 3.7.1 注意!此种情况只会在windows上发生,因为在linux上你只需要删除anaconda3整个文件夹,重新安装一定会成功! 1.原因 Anaconda肯定是没有成功安装的&am…

python读取pcd点云/转numpy(python2+python3,非ROS环境)

0.引言 \qquadROS的PCL库支持python读取点云,ROS1关联的是python2(2.7),ROS2关联的是python3(>3.5),但这对于windows的用户和没装ROS的ubuntu用户似乎不够友好。下面就介绍两种不需要ros的方…

Java中List排序的3种方法!

作者 | 王磊来源 | Java中文社群(ID:javacn666)转载请联系授权(微信ID:GG_Stone)在某些特殊的场景下,我们需要在 Java 程序中对 List 集合进行排序操作。比如从第三方接口中获取所有用户的列表&…

Spring 事务失效的 8 种场景!

在日常工作中,如果对Spring的事务管理功能使用不当,则会造成Spring事务不生效的问题。而针对Spring事务不生效的问题,也是在跳槽面试中被问的比较频繁的一个问题。点击上方卡片关注我今天,我们就一起梳理下有哪些场景会导致Spring…

vscode无法识别constexpr

问题 vscode 无法识别constexpr(常指针类型) 方法 打开工程路径下的.vscode文件夹(一般是自动隐藏的,CtrlH显示隐藏)设置c_cpp_properties.json文件如下: {"configurations": [{"name…

三流Java搞技术,二流Java搞框架,一流Java…

如何反驳“99% 的 Java 程序员都是 Spring 程序员”这句话?答案是不能。互联网发展至今,站在巨人肩膀上编程像一日三餐一样寻常。Spring Boot 的确凭一己之力拉低了 Java 开发的门槛,可普通开发与高开之间,真就因为一个…

【Ubuntu】vscode配置PCL库/vscode无法导入PCL库

问题 PCL库是ROS框架自带的点云处理库,可以通过find_package(PCL REQUIRED)在CMakeLists.txt中导入,但是vscode却无法识别,出现问题如下: 注意,本文解决方案仅限Ubuntu! 解决方案 打开工程路径下的.vsc…

面试官:HashSet是如何保证元素不重复的?

作者 | 磊哥来源 | Java面试真题解析(ID:aimianshi666)转载请联系授权(微信ID:GG_Stone)本文已收录《Java常见面试题》系列,开源地址:https://gitee.com/mydb/interviewHashSet 实现…

【Ubuntu】Ubuntu 20.04无法识别网口/以太网/有线网卡

这里写自定义目录标题0.症状1.查看网卡类型2.下载网卡驱动3.安装网卡驱动0.症状 \qquad表现为插入以太网网口后右上角没有显示网络,即没有下图的音量左侧的标志 打开设置的【网络】选项没有以太网接入,然而以太网口信号灯仍然正常闪烁。这种情况基本可以…

小心Lombok用法中的坑

刚才写完了代码,自测的时候,出现了NPE问题。排查的时候发现是Lombok的坑,以前也遇到过,所以觉得有必要过来记录一下。我先描述一下现象,我的代码里面订单服务A 需要调用缓存服务B,服务B就是一个Bean&#x…

【VSCode】VSCode使用conda环境时找不到python包/找不到Module

这里写自定义目录标题0.问题描述1.原因2.解决方法0.问题描述 \qquad首先需要排除是否是VSCode未配置conda环境的问题,当然,相信VSCode的老粉都不会犯这个低级错误,请CtrlP,在搜索框>select interpreter检查一下python环境。 …

PS如何对JPG文件直接抠图

如何JPG文件直接抠图 先转为智能对象: 再栅格化图层 此进即可直接进行抠图!