Electron菜单的创建和使用
简介一个桌面应用肯定缺少不了菜单,那么本文主要介绍下如何在Electron中创建和使用菜单。
一、菜单创建和使用
Electron创建菜单需要创建一个菜单模板,那么下面先在根目录下创建一个新文件menu.js,内容如下
const { Menu } = require('electron')
var template = [
{
label: '菜单1',
submenu: [
{ label: '菜单1-1' },
{ label: '菜单1-2' }
]
},
{
label: '菜单2',
submenu: [
{ label: '菜单2-1' },
{ label: '菜单2-2' }
]
}
]
var m = Menu.buildFromTemplate(template)
Menu.setApplicationMenu(m)
注意:很多人都常常将label写成了lable,然后出错,找了很长时间,结果是单词写错了。
菜单属于主线程,所以需要在主线程main.js的read的生命周期中加入如下代码:
require('./menu.js')
注意:这里一定要用./menu.js,而不能简写成menu.js
运行结果:
二、菜单中打开新窗口
修改menu.js,新增“打开新窗口”的菜单,定义点击事件,代码如下
const { Menu, BrowserWindow } = require('electron')
var template = [
{
label: '菜单1',
submenu: [
{ label: '菜单1-1' },
{ label: '菜单1-2' },
{
label:'打开新窗口',
click:()=>{
win = new BrowserWindow({
width:500,
height:500,
webPreferences:{ nodeIntegration:true}
})
win.loadFile('index.html')
win.on('closed',()=>{
win = null
})
}
}
]
},
{
label: '菜单2',
submenu: [
{ label: '菜单2-1' },
{ label: '菜单2-2' }
]
}
]
var m = Menu.buildFromTemplate(template)
Menu.setApplicationMenu(m)
三、菜单绑定快捷键
绑定快捷键的属性是accelerator属性,比如我们新打开一个窗口,我们就的代码可以写成这样。
const { Menu, BrowserWindow } = require('electron')
var template = [
{
label: '菜单1',
submenu: [
{ label: '菜单1-1' },
{ label: '菜单1-2' },
{
label:'打开新窗口',
accelerator:`ctrl+b`,
click:()=>{
win = new BrowserWindow({
width:500,
height:500,
webPreferences:{ nodeIntegration:true}
})
win.loadFile('index.html')
win.on('closed',()=>{
win = null
})
}
}
]
},
{
label: '菜单2',
submenu: [
{ label: '菜单2-1' },
{ label: '菜单2-2' }
]
}
]
var m = Menu.buildFromTemplate(template)
Menu.setApplicationMenu(m)
四、右键菜单
const { remote } = require('electron')
var rigthTemplate = [
{
label: '文件', click: function () {
console.log('点击事件');
}
},
{
label: '编辑', submenu: [
{ label: '保存' },
{ label: '另存' }
]
},
{ label: '帮助' }
]
window.onload = function () {
var m = remote.Menu.buildFromTemplate(rigthTemplate)
window.addEventListener('contextmenu', function (e) {
//阻止当前窗口默认事件
e.preventDefault();
//把菜单模板添加到右键菜单
m.popup({ window: remote.getCurrentWindow() })
})
}
注意:这里使用直接使用remote会报错,高版本的Electron是不能直接调用remote的。所以需要在主进程中设置:
enableRemoteModule: true
快速生成表格
Electron页面跳转、浏览器打开链接和打开新窗口
MD5算法一般用于检查文件完整性,尤其常用于检测在(网络)文件传输、拷贝、磁盘错误或其他无恶意涉入的情况下文件的正确性。MD5全称报文摘要算法(Message-DigestAlgorithm 5)[RFC 1321],该算法对任意长度的信息进行逐位计算,产生一个二进制长度128位(十六进制长度32位)的校验和(或称“指纹”,“报文摘要”),不同的文件内容生成相同的报文摘要的概率是极其小的。
GitLab 是一个用于仓库管理系统的开源项目,使用Git作为代码管理工具,并在此基础上搭建起来的web服务。
HI博客上线啦!这一刻不知道等待了多少年,做为以为技术开发人员,没有自己的博客怎么能行呢!最近利用换工作的空余的时间,为自己搭建了该博客,也在自己人生中很重要的日子上线了该博客。也希望该博客能将自己在工作中比较好的技术整理成文章和一些其他比较好文章转载过来,为需要用到相关技术的同行提供有用的帮助。还希望以后大家能指出相关文章中出现的错误,让看到相关博文的人受益,别被我的个人错误而误导他人。
Docker编译镜像出现:fetch http://dl-cdn.alpinelinux.org/alpine/v3.12/main/x86_64/APKINDEX.tar.gz
ERROR: http://dl-cdn.alpinelinux.org/alpine/v3.12/main: temporary error (try again later)
WARNING: Ignoring APKINDEX.2c4ac24e.tar.gz: No such file or directory问题
在Mac电脑中,如何对Git的用户名和密码进行修改呢?起初不懂Mac,所以整了很久,本文将记录如何对这个进行操作,以便后期使用。
在使用Git的过程中,不想每次都输入用户名和密码去拉取代码,所以就需要保存这些信息,那么既然有保存了,就必须有清除功能。