Ошибка вызова скрипта Python в Electron.js - PullRequest
0 голосов
/ 08 июля 2019

Я пытаюсь вызвать скрипт Python, когда пользователь нажимает кнопку. Я использую Electron.js. Когда я вызываю скрипт в начале приложения, он вызывается правильно, но когда я пытаюсь сделать это, когда пользователь нажимает кнопку, он не выполняется. Я использую js модуль python-shell.

вот мой код:

main.js:

const electron = require('electron')

// Module to control application life.
const app = electron.app
// Module to create native browser window.
const BrowserWindow = electron.BrowserWindow

const path = require('path')
const url = require('url')

// Keep a global reference of the window object, if you don't, the window will
// be closed automatically when the JavaScript object is garbage collected.
let mainWindow

function createWindow () {
  // Create the browser window.
  mainWindow = new BrowserWindow({width: 800, height: 600})



  // and load the index.html of the app.
  mainWindow.loadURL(url.format({
    pathname: path.join(__dirname, '/gui/gui.html'),
    protocol: 'file:',
    slashes: true
  }))

  // Open the DevTools.
  // mainWindow.webContents.openDevTools()

  // Emitted when the window is closed.
  mainWindow.on('closed', function () {
    // Dereference the window object, usually you would store windows
    // in an array if your app supports multi windows, this is the time
    // when you should delete the corresponding element.
    mainWindow = null
  })
}

// This method will be called when Electron has finished
// initialization and is ready to create browser windows.
// Some APIs can only be used after this event occurs.
app.on('ready', createWindow)

// Quit when all windows are closed.
app.on('window-all-closed', function () {
  // On OS X it is common for applications and their menu bar
  // to stay active until the user quits explicitly with Cmd + Q

    app.quit()
})

app.on('activate', function () {
  // On OS X it's common to re-create a window in the app when the
  // dock icon is clicked and there are no other windows open.
  if (mainWindow === null) {
    createWindow()
  }
})

gui.html:

<head>
  <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
  <script src="https://unpkg.com/sweetalert/dist/sweetalert.min.js"></script>
  <script src="linkers/TestModem.js"></script>
</head>

<body>
  <div class="container">
    <div class="jumbotron">
      <h1>Powered by Python</h1>
      <p>Rendered by HTML and JavaScript</p>
    </div>
    <br>
    <div class="row">
    <div class="col-xs-4">
      <br>
      <button id="prueba" class="btn btn-success" onclick="get_weather()">Start Test</a></button>
    </div>
    <div class="col-xs-4">
    </div>
</div>
</div>
<body>

И TestModem.js

let {PythonShell} = require('python-shell')
var path = require("path")

function get_weather() {

  var options = {
    scriptPath : path.join(__dirname, 'engine/'),
    //sargs : [city]
  }

  let pyshell = new PythonShell('weather_engine.py', options);


  pyshell.on('message', function(message) {
    console.log("data: ",message.toString('utf8'));
  })

}

Но ничего не происходит. Код Python просто:

import sys

print("hello")

sys.stdout.flush()

Я повторяю, что если я запишу содержимое TestModem.js в файл main.js, оно будет выполнено правильно. Что я делаю не так? путь правильный. Нужно ли включать какую-то строку в мой код? Спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...