Electronjs (внешний интерфейс) не взаимодействует с Python (внутренний интерфейс) - PullRequest
0 голосов
/ 05 октября 2019

Я создаю настольное приложение, используя Electron JS и Python. когда я пытаюсь соединить мои js-файлы с python, я выдаю ошибки. У меня есть следующие файлы.

  • main.js
  • linker.js
  • package.json
  • index.html
  • main.py

Я следую различным учебным пособиям следующим образом.

Официальная документация npm

Вопрос, связанный со Stackoverflow

Я также нахожу решение browserify и создаю bundle.js и связываю его с файлом html , но я сообщаю об ошибке, чтовызывающая функция не определена в bundle.js для browserify Я перехожу по этой ссылке. browserify для electronicjs

linker.js :

const {PythonShell} = require('python-shell');
// import {PythonShell} form 'python-shell'; // also tried this
function myFunc(){
    // var python = require("python-shell");

    var path = require("path");

    var city = document.getElementById("city").value;
    document.getElementById("city").value = "";
    var options = {
        mode: 'text',
        scriptPath : path.join(__dirname, '/../engine/'),
        args : [city]  // passing argument

    };
    var pyshell = new PythonShell('main.py', options);

    pyshell.on('message', function(message){
        alert(message);
    }); 
}

index.html :

<!DOCTYPE html>
<html>

<head>
  <script src="linker.js"></script>

  <title>HCMS</title>
</head>

<body>
        <input type="text" id="city" placeholder="Enter City name">
    <button onclick="myFunc()">Clicke</button>
</body>

</html>

main.py :

import requests
from bs4 import BeautifulSoup as bs
import sys
city = sys.argv[1]

def myFunc(place):
    # place = place.replace(" ", "-")
    # url = "https://www.weather-forecast.com/locations/" + place + "/forecasts/latest"
    # r = requests.get(url)
    # soup = bs(r.content, "lxml")
    # weather = soup.findAll("span", {"class": "phrase"})[0].text
    # place = "My city is "+place
    return place

print(myFunc(city))
sys.stdout.flush()
...