Electron【详解】菜单 Menu

ops/2024/12/26 23:04:24/

顶部菜单

因顶部菜单款式传统,且不同系统的配置不同,建议在页面中自行实现菜单,而不采用 Electron 自带的菜单方案。

主进程中

import { Menu } from 'electron'
const template = [{ role: 'appMenu' }]
const menu = Menu.buildFromTemplate(template)
Menu.setApplicationMenu(menu)

在 template 中添加菜单配置项即可。

  • role 为系统内置的菜单,更多系统菜单如:
{ role: 'undo' },
{ role: 'redo' },
{ type: 'separator' }, // 我是分割线,不是菜单
{ role: 'cut' },
{ role: 'copy' },
{ role: 'paste' },

在这里插入图片描述

自定义菜单

自定义菜单名称 label

  {label: '自定义菜单',submenu: [{ role: 'minimize' }]}

在这里插入图片描述

自定义菜单方法 click 和 快捷键 accelerator

  {label: '自定义菜单',submenu: [{label: 'electron 官网',click: async () => {// 会用默认浏览器打开electron 官网await shell.openExternal('https://electronjs.org')},accelerator: 'CmdOrCtrl+1' // 快捷键}]}

在这里插入图片描述

自定义菜单类型 type

分割线
{ type: 'separator' }

在这里插入图片描述

单选
  {label: '菜单位置',submenu: [{type: 'radio',label: '顶部',click: () => {// 省略了实现逻辑}},{type: 'radio',label: '底部',click: () => {// 省略了实现逻辑}}]}

在这里插入图片描述

多选
  {label: '自定义菜单',submenu: [{type: 'checkbox',label: '显示工具栏',click: (e) => {// 省略了实现逻辑console.log(e.checked)}}]}

在这里插入图片描述

专门针对 mac 系统配置菜单

const isMac = process.platform === 'darwin'
const template = [...(isMac? [{label: 'mac系统菜单',submenu: [{ role: 'quit' }]}]: [{label: '其他系统菜单',submenu: [{ role: 'quit' }]}])
]

动态改变菜单

import { Menu, MenuItem } from 'electron'const template = [{id: 'customMenu',label: '自定义菜单',submenu: [{id: 'customMenu-oldWeb',label: 'electron 官网',click: async () => {// 隐藏原菜单项menu.getMenuItemById('customMenu-oldWeb')!.visible = false// 创建新菜单项const newMenuItem = new MenuItem({id: 'customMenu-newWeb',label: 'electron 官网(新)',click: async () => {await shell.openExternal('https://electronjs.org')},accelerator: 'CmdOrCtrl+2' // 快捷键})// 将新菜单项添加到原菜单项的子菜单中menu.getMenuItemById('customMenu')?.submenu?.append(newMenuItem)// 更新菜单Menu.setApplicationMenu(menu)},accelerator: 'CmdOrCtrl+1' // 快捷键}]}
]
const menu = Menu.buildFromTemplate(template)
Menu.setApplicationMenu(menu)

在这里插入图片描述

清空菜单

Menu.setApplicationMenu(null)

任务栏菜单

  • Mac 系统
  • Windows 系统

右键菜单

见 https://blog.csdn.net/weixin_41192489/article/details/144611858


http://www.ppmy.cn/ops/145234.html

相关文章

springboot462学生心理压力咨询评判(论文+源码)_kaic

摘 要 传统办法管理信息首先需要花费的时间比较多,其次数据出错率比较高,而且对错误的数据进行更改也比较困难,最后,检索数据费事费力。因此,在计算机上安装学生心理压力咨询评判软件来发挥其高效地信息处理的作用&am…

mybatis SqlSessionFactory

SqlSessionFactory 有六个方法创建 SqlSession 实例。通常来说,当你选择其中一个方法时,你需要考虑以下几点: 事务处理:你希望在 session 作用域中使用事务作用域,还是使用自动提交(auto-commit&#xff0…

Jmeter 分布式压测部署--常见坑以及解决方案

JMeter 是性能测试的利器,而分布式压测更是应对高并发场景的必备技能。然而,在实际部署中,初学者常遇到种种问题,导致压测效果不理想甚至失败。你是否也曾因配置错误而耗费时间?别急,这篇文章为你全面解析 …

源码分析之Openlayers中GeometryCollection类

概述 本文主要介绍GeometryCollection类,GeometryCollection类继承于Geometry类,关于Geometry类,参考这篇文章源码分析之Openlayers中Geometry基类介绍 GeometryCollection类就是一组几何对象的集合. 源码分析 GeometryCollection类源码实现 GeometryCollection类源码实现…

母婴用品系统|Java|SSM|JSP|

【技术栈】 1⃣️:架构: B/S、MVC 2⃣️:系统环境:Windowsh/Mac 3⃣️:开发环境:IDEA、JDK1.8、Maven、Mysql5.7 4⃣️:技术栈:Java、Mysql、SSM、Mybatis-Plus、JSP、jquery,html 5⃣️数据库可…

git 项目初始化

这里记录下idea2024 加 git 初始化项目的流程。 首先idea新建项目基于版本管理的项目: 第二步 输入远程仓库路径,然后点击clone。 第三步 输入密钥,然后点击log in。之前的版本是输入账号密码。但是没啥区别。 如果输入错了会有个弹框…

Layui数据表格开启前端排序切换功能实现Demo

备注 分页一般情况下必须得增加排序条件,不然排序可能会出现问题 采用的前端框架是Layui、后端是SpringBoot、Mybatis、数据库是PostgreSQL pgsql排序需注意null值 – 表示null排在有值行的前面 select * from tbl order by id nulls first; – 表示null排在有值行…

Python基础知识回顾

数据类型 Python可以区分整数(integers、下文简写为int)、浮点数(float)、字符串(string)和布尔值(Boolean)等数据类型。 1)int是可正可负的整数 2)float包…