Webテクノロジー(HTML5、CSS、JS)を使用してクロスプラットフォームのデスクトップアプリを作成しようとしています。いくつかのフレームワークを見て、Electronフレームワークを使用することにしました。
私はすでにPythonでアプリを作成しているので、ElectronフレームワークでPython?
ありがとうございました
Electronで作業することは可能ですが、「webbish」UI機能を探している場合は、 Flexx をチェックできます。これにより、純粋なPython Web開発ツールのスタイリングとUIの柔軟性を使用します。
Electronを使用することを主張する場合は、このアイデアに従う必要があります post 。
まず、すべてがインストールされていることを確認してください。
pip install Flask
npm install electron-prebuilt -
npm install request-promise -g
ここで、すべての魔法を発生させたいディレクトリを作成し、次のファイルを含めます
hello.py
:
from __future__ import print_function
import time
from flask import Flask
app = Flask(__name__)
@app.route("/")
def hello():
return "Hello World! This is powered by Python backend."
if __name__ == "__main__":
print('oh hello')
#time.sleep(5)
app.run(Host='127.0.0.1', port=5000)
基本的なpackage.json
:
{
"name" : "your-app",
"version" : "0.1.0",
"main" : "main.js",
"dependencies": {
"request-promise": "*",
"electron-prebuilt": "*"
}
}
最後にmain.js
:
const electron = require('electron');
const app = electron.app;
const BrowserWindow = electron.BrowserWindow;
electron.crashReporter.start();
var mainWindow = null;
app.on('window-all-closed', function() {
//if (process.platform != 'darwin') {
app.quit();
//}
});
app.on('ready', function() {
// call python?
var subpy = require('child_process').spawn('python', ['./hello.py']);
//var subpy = require('child_process').spawn('./dist/hello.exe');
var rq = require('request-promise');
var mainAddr = 'http://localhost:5000';
var openWindow = function(){
mainWindow = new BrowserWindow({width: 800, height: 600});
// mainWindow.loadURL('file://' + __dirname + '/index.html');
mainWindow.loadURL('http://localhost:5000');
mainWindow.webContents.openDevTools();
mainWindow.on('closed', function() {
mainWindow = null;
subpy.kill('SIGINT');
});
};
var startUp = function(){
rq(mainAddr)
.then(function(htmlString){
console.log('server started!');
openWindow();
})
.catch(function(err){
//console.log('waiting for the server start...');
startUp();
});
};
// fire!
startUp();
});
投稿自体から取られた-次のメモがあります
Main.jsで、Pythonアプリケーションの子プロセスを生成します。次に、サーバーが無制限のループを使用しているかどうかを確認します(よくありません!実際に確認する必要があります!時間がかかり、数秒後にループが切断されます)サーバーが起動したら、新しいローカルWebサイトのインデックスページを指す実際の電子ウィンドウを作成します。
Electron内でnodejsモジュールを使用できます。 https://github.com/JeanSebTr/node-python をご覧ください。個人的な経験はありませんが、あなたが探しているものかもしれません。
pythonを使用して電子の代替を探していました。CEFPythonそのPython Chromium Embedded Frameworkのバインディング。 CEFはPython https://github.com/cztomczak/cefpython の一種の電子です
Python-Shellを使用して、PythonとNode.js/Electronの間で通信できます。
python-Shellは、基本的かつ効率的なプロセス間通信と優れたエラー処理により、Node.jsからPythonスクリプトを実行する簡単な方法を提供します。
Python-Shellを使用すると、次のことができます。
ターミナルで、プロジェクトのルートフォルダー内にいることを確認し、次のコマンドを実行してnpmからpython-Shellをインストールします。
npm install --save python-Shell
次に、次を使用してPython Shellを実行します。
var pyshell = require('python-Shell');
pyshell.run('hello.py', function (err, results) {
if (err) throw err;
console.log('hello.py finished.');
console.log('results', results);
});
詳細はこちらをご覧ください tutorial