Hướng dẫn electron call python script - tập lệnh gọi điện tử python

Tôi đã giải quyết vấn đề của mình. Tôi sẽ giải thích cho những độc giả trong tương lai có thể có cùng một vấn đề.

Sử dụng Electron Builder, có một số tùy chọn có thể không đóng gói mã nguồn ứng dụng vào tệp electron. Các tùy chọn này là:

Asar

Có nên đóng gói mã nguồn ứng dụng vào một kho lưu trữ, sử dụng định dạng lưu trữ electron. Mặc định là đúng. Các mô -đun nút, phải được giải nén, sẽ được phát hiện tự động, bạn không cần thiết lập một cách rõ ràng Asarunpack - vui lòng gặp sự cố nếu điều này không hoạt động.

Hoặc bạn có thể vượt qua đối tượng của các tùy chọn Asar.

Asarunpack

Một mẫu GLOB liên quan đến thư mục ứng dụng, trong đó chỉ định các tệp nào để giải nén khi tạo kho lưu trữ ASAR.

{
  "name": "electronjs-python",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "keywords": [],
  "author": "",
  "license": "ISC"
}
3

Cài đặt

{
  "name": "electronjs-python",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "keywords": [],
  "author": "",
  "license": "ISC"
}
4 thành
{
  "name": "electronjs-python",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "keywords": [],
  "author": "",
  "license": "ISC"
}
5 giải quyết vấn đề, nhưng nó không được khuyến nghị bởi
{
  "name": "electronjs-python",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "keywords": [],
  "author": "",
  "license": "ISC"
}
6.

Vì vậy, bao gồm tất cả các tệp tôi cần giải nén trong một thư mục và sử dụng

{
  "name": "electronjs-python",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "keywords": [],
  "author": "",
  "license": "ISC"
}
7 là cách đúng. Bây giờ tất cả các tệp được giải nén đều có sẵn trong
{
  "name": "electronjs-python",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "keywords": [],
  "author": "",
  "license": "ISC"
}
8

Một điều khác cần tính đến là việc sử dụng đường dẫn

{
  "name": "electronjs-python",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "keywords": [],
  "author": "",
  "license": "ISC"
}
9 sẽ xem xét thư mục gốc của dự án electron của tôi, chứ không phải đường dẫn nơi đặt tệp nodejs của tôi, tôi cần sử dụng:

let python = spawn('python', [path.join(__dirname, '../app.asar.unpacked/my-folder', 'ResolvePosition.py'), obsFilePath, navFilePath])

Trong hướng dẫn này, bạn sẽ học cách xây dựng GUI cho các ứng dụng Python của mình bằng cách sử dụng các công nghệ điện tử và web, tức là HTML, CSS và JavaScript-điều này có nghĩa là tận dụng các tiến bộ mới nhất trong phát triển web trước để xây dựng các ứng dụng máy tính để bàn nhưng cũng tận dụng lợi thế của Python và các thư viện mạnh mẽ mà nó phải dễ dàng thực hiện các yêu cầu nâng cao.

Bạn có thể tìm thấy mã trong kho github này.

Tạo ứng dụng điện tử đầu tiên của bạn

Bây giờ chúng ta hãy xem cách tạo ứng dụng điện tử đầu tiên của chúng tôi. Bạn có thể phát triển các ứng dụng điện tử giống như bạn thường phát triển ứng dụng Node.js.

Trước tiên bạn cần bắt đầu với việc tạo hoặc tạo tệp

npm install --save-dev electron
0 bên trong thư mục của dự án bằng lệnh sau:

Điều này sẽ tạo tệp

npm install --save-dev electron
0 cơ bản với các giá trị mặc định:

{
  "name": "electronjs-python",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "keywords": [],
  "author": "",
  "license": "ISC"
}

Tiếp theo, tạo hai tệp

npm install --save-dev electron
2 và
npm install --save-dev electron
3 bên trong thư mục của dự án.

Tệp

npm install --save-dev electron
3 là tập lệnh
npm install --save-dev electron
5, vì vậy chúng tôi cần thay đổi thuộc tính chính của tệp
npm install --save-dev electron
0 của chúng tôi thành
npm install --save-dev electron
3 thay vì tệp
npm install --save-dev electron
8 mặc định (không bắt buộc phải có ưu tiên):

Tiếp theo, bạn cần cài đặt

npm install --save-dev electron
9 từ NPM:

npm install --save-dev electron

Điều này sẽ cài đặt

npm install --save-dev electron
9 cục bộ; Bạn cũng có thể làm theo hướng dẫn chính thức để biết thêm các tùy chọn có sẵn để cài đặt
npm install --save-dev electron
9.

Tiếp theo, thêm tập lệnh

  "scripts": {
    "start": "electron .",
    "test": "echo \"Error: no test specified\" && exit 1"
  },
2 để chạy tệp
npm install --save-dev electron
3. Mở tệp
npm install --save-dev electron
0 và thêm:

  "scripts": {
    "start": "electron .",
    "test": "echo \"Error: no test specified\" && exit 1"
  },

Bây giờ, hãy thêm mã chạy cửa sổ GUI trong quy trình chính. Mở tệp

npm install --save-dev electron
3 và thêm, dòng đầu tiên để nhập mô -đun
npm install --save-dev electron
9:

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

Tiếp theo, thêm chức năng sau đây tạo ra một thể hiện là

  "scripts": {
    "start": "electron .",
    "test": "echo \"Error: no test specified\" && exit 1"
  },
7 và tải tệp
npm install --save-dev electron
2:

  function createWindow () {
    window = new BrowserWindow({width: 800, height: 600})
    window.loadFile('index.html')
  }

Khi ứng dụng đã sẵn sàng, hãy chạy phương thức

  "scripts": {
    "start": "electron .",
    "test": "echo \"Error: no test specified\" && exit 1"
  },
9:

  app.on('ready', createWindow)

Chúng tôi cũng có thể xử lý các sự kiện khác nhau như khi đóng tất cả các cửa sổ bằng cách sử dụng:

  app.on('window-all-closed', () => {
    // On macOS it is common for applications and their menu bar
    // to stay active until the user quits explicitly with Cmd + Q
    if (process.platform !== 'darwin') {
      app.quit()
    }
  })

Cuối cùng, hãy thêm nội dung sau vào tệp

npm install --save-dev electron
2:


  
    
       charset="UTF-8">
      </span>Hello Python from Electron!<span>
    
    
      

Hello Python!

Bây giờ, bạn có thể chạy ứng dụng bằng cách sử dụng:

Đây là ảnh chụp màn hình của ứng dụng đang chạy:

Hướng dẫn electron call python script - tập lệnh gọi điện tử python

Chạy kịch bản python từ electron

Vì chúng tôi muốn phát triển ứng dụng của mình bằng Python và sử dụng Electron để xây dựng Frontend GUI với web; Chúng ta cần có khả năng giao tiếp giữa Python và Electron.

Hãy xem cách chạy tập lệnh Python cơ bản từ electron. Đầu tiên, hãy tạo tệp

const {app, BrowserWindow} = require('electron')
1 và thêm mã Python sau đây in Hello từ Python! Theo đầu ra tiêu chuẩn:

import sys
print('Hello from Python!')
sys.stdout.flush()

Trong tệp

npm install --save-dev electron
3 của bạn, hãy chạy mã sau để sinh ra quy trình Python và thực thi tập lệnh
const {app, BrowserWindow} = require('electron')
1:

{
  "name": "electronjs-python",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "keywords": [],
  "author": "",
  "license": "ISC"
}
0

Hướng dẫn electron call python script - tập lệnh gọi điện tử python

Sử dụng const {app, BrowserWindow} = require('electron') 4 để giao tiếp giữa Python và Node.js/Electron

Một cách tốt hơn để giao tiếp với Node.js/Electron và Python là thông qua việc sử dụng gói

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

const {app, BrowserWindow} = require('electron')
4 cung cấp một cách dễ dàng để chạy các tập lệnh Python từ Node.js với giao tiếp giữa các quá trình cơ bản và hiệu quả và xử lý lỗi tốt hơn.

Sử dụng

const {app, BrowserWindow} = require('electron')
4, bạn có thể:

  • SPAWN PYTHON SCRIPT trong một quá trình trẻ em;
  • chuyển đổi giữa văn bản, JSON và chế độ nhị phân;
  • sử dụng trình phân tích cú pháp và định dạng tùy chỉnh;
  • thực hiện chuyển dữ liệu thông qua các luồng
    const {app, BrowserWindow} = require('electron')
    
    8 và
    const {app, BrowserWindow} = require('electron')
    
    9;
  • Nhận dấu vết ngăn xếp khi một lỗi được ném.

Quay trở lại thiết bị đầu cuối của bạn, đảm bảo bạn đang ở trong thư mục gốc của dự án và chạy lệnh sau để cài đặt

const {app, BrowserWindow} = require('electron')
4 từ NPM:

{
  "name": "electronjs-python",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "keywords": [],
  "author": "",
  "license": "ISC"
}
1

Sau đó, bạn có thể chỉ cần chạy vỏ Python bằng cách sử dụng:

{
  "name": "electronjs-python",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "keywords": [],
  "author": "",
  "license": "ISC"
}
2

Hướng dẫn electron call python script - tập lệnh gọi điện tử python

Liên kết

Trong hướng dẫn này, chúng tôi đã thấy cách sử dụng electron và python để xây dựng một ứng dụng máy tính để bàn đơn giản.

Chúng tôi cũng đã thấy cách sử dụng mô -đun

const {app, BrowserWindow} = require('electron')
4 để chạy vỏ Python từ ứng dụng Node.js/Electron và giao tiếp giữa electron và Python.


  • Tác giả: Ahmed Bouchefra theo dõi @ahmedbouchefra
  • Ngày: 27 tháng 8 năm 2018