electron桌面应用程序搭建及简单运行

下面是详细的“electron桌面应用程序搭建及简单运行”的完整攻略。

一、什么是Electron?

Electron 是由 Github 开发,用 HTML,CSS 和 JavaScript 来构建跨平台桌面应用程序的一个开源库。通过 Electron,可以使用 Web 技术如 HTML,CSS 和 JavaScript 来设计和构建 Windows、MacOS 和 Linux 等跨平台桌面应用程序。

二、Electron开发环境安装

1. 安装Node.js

Electron 是基于 Node.js 运行的,所以必须先安装 Node.js。安装方法可以上 Node.js 官网下载对应的安装包。

2. 安装Electron

在命令行中执行以下命令安装 Electron:

npm install electron -g

3. 使用Electron

创建一个新的项目目录,进入该目录,新建一个 package.json 文件(用于管理项目依赖),然后执行命令安装 Electron 的依赖:

npm init
npm install electron --save-dev

安装完成后,在项目的根目录下创建一个 main.js 文件,文件内容如下:

const { app, BrowserWindow } = require('electron')

function createWindow () {
  // 创建窗口对象
  let win = new BrowserWindow({
    width: 800,
    height: 600,
    webPreferences: {
      // 使用nodejs
      nodeIntegration: true
    }
  })

  // 窗口加载html页面
  win.loadFile('index.html')
}

// electron初始化完成时触发
app.on('ready', createWindow)

在项目根目录下新建一个 index.html 文件,文件内容如下:

<!DOCTYPE html>
<html>
<head>
  <title>Hello World!</title>
</head>
<body>
  <h1>Hello World!</h1>
</body>
</html>

接下来,在命令行中输入以下命令运行应用程序:

electron .

运行成功后,将会在桌面上弹出一个 Electron 应用程序,窗口中将会显示一个 “Hello World!” 的标题。

三、示例说明

下面我们来实现一个简单的托盘应用程序和一个文件选择器应用程序。

1. 托盘应用程序

创建一个名为 tray-app 的项目目录。

在该目录下创建如下文件:

index.html 文件:

<!DOCTYPE html>
<html>
<head>
  <title>Tray App</title>
  <script type="text/javascript">
    const { app, Menu, Tray } = require('electron')

    let tray

    function createTrayIcon() {
      tray = new Tray('./icon.png')
      const contextMenu = Menu.buildFromTemplate([
        { role: 'quit' }
      ])
      tray.setToolTip('Tray App')
      tray.setContextMenu(contextMenu)
    }

    app.whenReady().then(() => {
      createTrayIcon()
    })
  </script>
</head>
<body>
  <p>Tray App</p>
</body>
</html>

main.js 文件:

const { app, BrowserWindow, Tray } = require('electron')
const path = require('path')

let win

function createWindow () {
  win = new BrowserWindow({
    width: 800,
    height: 600,
    webPreferences: {
      nodeIntegration: true
    }
  })

  win.loadFile('index.html')
}

app.whenReady().then(() => {
  // 监听关闭事件
  app.on('window-all-closed', function () {
    // 判断是不是 Mac 系统
    if (process.platform !== 'darwin') {
      app.quit()
    }
  })

  app.on('activate', function () {
    if (win === null) {
      createWindow()
    }
  })

  // 创建菜单栏
  const template = [{
    label: 'Edit',
    submenu: [
      {role: 'undo'},
      {role: 'redo'},
      {role: 'cut'},
      {role: 'copy'},
      {role: 'paste'},
      {role: 'selectall'}
    ]
  }]

  const menu = Menu.buildFromTemplate(template)
  Menu.setApplicationMenu(menu)

  createWindow()
})

将图片文件 icon.png 放在项目根目录下。

在命令行中输入以下命令运行应用程序:

electron .

运行成功后,将会在系统托盘中看到 Tray App 图标。

2. 文件选择器应用程序

在上面的 tray-app 项目目录下创建一个名为 dialog-app 的项目目录。

在该目录下创建如下文件:

index.html 文件:

<!DOCTYPE html>
<html>
<head>
  <title>Dialog App</title>
  <script type="text/javascript">
    const { app, dialog } = require('electron')

    function openFileDialog() {
      dialog.showOpenDialog({
        properties: ['openFile', 'multiSelections']
      }).then(result => {
        console.log(result.filePaths)
      }).catch(err => {
        console.log(err)
      })
    }
  </script>
</head>
<body>
  <button onclick="openFileDialog()">选择文件</button>
</body>
</html>

main.js 文件:

const { app, BrowserWindow } = require('electron')

let win

function createWindow () {
  win = new BrowserWindow({
    width: 800,
    height: 600,
    webPreferences: {
      nodeIntegration: true
    }
  })

  win.loadFile('index.html')
}

app.whenReady().then(() => {
  // 监听关闭事件
  app.on('window-all-closed', function () {
    // 判断是不是 Mac 系统
    if (process.platform !== 'darwin') {
      app.quit()
    }
  })

  app.on('activate', function () {
    if (win === null) {
      createWindow()
    }
  })

  createWindow()
})

在命令行中输入以下命令运行应用程序:

electron .

运行成功后,将在应用程序窗口中看到一个选择文件的按钮,点击按钮可调用系统文件选择器。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:electron桌面应用程序搭建及简单运行 - Python技术站

(0)
上一篇 2023年6月25日
下一篇 2023年6月25日

相关文章

  • maven如何打包动态环境变量(包括启动脚本)

    Maven是一款Java项目自动化构建工具,可以通过配置maven打包命令实现生成可执行的Java应用程序,同时还可以将配置文件等资源一同打包到一起方便部署。打包使用的配置文件中常常会包含一些动态环境变量,例如生产环境不同的数据库连接参数或者日志文件路径等。下面将详细讲解如何在Maven中打包动态环境变量。 1.配置Maven profile 在项目的pom…

    other 2023年6月27日
    00
  • Python 实现递归法解决迷宫问题的示例代码

    下面我将详细讲解“Python 实现递归法解决迷宫问题的示例代码”的完整攻略,过程中将包含两条示例说明。首先,我们需要明确迷宫问题的概念。 什么是迷宫问题? 迷宫问题是一种求解路径的算法问题,将迷宫地图看成一个矩阵,其中障碍物用1表示,空地用0表示,则迷宫问题即为在这个矩阵中求解从起点到终点的一条可行路径。迷宫问题通常有多种解法,其中递归法是一种常见的解法。…

    other 2023年6月27日
    00
  • swiftmd5加密方法

    以下是“Swift MD5加密方法”的完整攻略: Swift MD5加密方法 在Swift中,我们可以使用MD5算法来加密字符串。以下是如何使用Swift实现MD5加密的步骤: 1. 导入CryptoKit库 首先,我们需要导入Swift的CryptoKit库。可以使用以下代码: import CryptoKit 2. 创建MD5哈希 接下来,我们可以使用C…

    other 2023年5月7日
    00
  • 详解Android控件状态依赖框架

    详解Android控件状态依赖框架 什么是控件状态依赖框架 Android控件状态依赖框架(Control State Dependency Framework)是一种Android开发中常用的框架,用于设置和管理同一界面内不同控件之间的状态依赖关系,以便根据不同条件自动控制控件的状态,提高用户交互效果,简化开发者的开发难度。该框架可以用于任何Android…

    other 2023年6月27日
    00
  • Spring主配置文件(applicationContext.xml) 导入约束详解

    确保你已经理解了Spring主配置文件的概念,下面开始介绍如何使用导入约束来扩展Spring主配置文件。 什么是导入约束 导入约束是在Spring主配置文件中引用其他xml文件,并将其他xml文件中定义的bean和配置导入到当前的主配置文件中使用。使用导入约束可以使得主配置文件更加简洁易懂,同时也方便了维护和重用。 导入约束的使用 使用导入约束需要在主配置文…

    other 2023年6月25日
    00
  • python实现文件名批量替换和内容替换

    下面是“python实现文件名批量替换和内容替换”的完整攻略。 文件名批量替换 1. 安装必要的库 在使用Python进行文件名批量替换前,我们需要先安装必要的库。其中,os和shutil库为Python内置库,不需要安装,而re库为正则表达式库,需要通过以下命令进行安装: pip install re 2. 导入必要的库 在安装完必要的库后,在Python…

    other 2023年6月26日
    00
  • oracle中类似indexof用法_instr函数

    Oracle中类似indexOf用法——instr函数 在Oracle中,如果需要查找一个字符串在另一个字符串中出现的位置,可以使用instr函数。instr函数需要传入两个参数,第一个参数为需要查找的字符串,第二个参数为被搜索的字符串。该函数会返回被搜索字符串中匹配到的第一个子串的位置,若匹配不成功则返回0。 语法格式 INSTR(string, subs…

    其他 2023年3月28日
    00
  • Android自定义View圆形进度条控件(三)

    Android自定义View圆形进度条控件(三)攻略 本攻略将详细讲解如何创建一个自定义的圆形进度条控件,并提供两个示例说明。 步骤一:创建自定义View类 首先,我们需要创建一个自定义的View类来实现圆形进度条的功能。以下是一个简单的示例代码: public class CircleProgressBar extends View { private i…

    other 2023年9月7日
    00
合作推广
合作推广
分享本页
返回顶部